两道C语言编程题题,求解!

2025-02-14 03:16:10
推荐回答(3个)
回答1:

(1)
#include
void main(){
int i,j,n,K;
char s[100],x;
scanf("%d",&n);
for (j=0;jscanf("%d\n",&K);
gets(s);
for (i=0;ix = s[i];
if ( (s[i] >= 'a') && (s[i] <= 'z') ) {
x = s[i]+K;
if (x > 'z') x = x - 26;
if (x < 'a') x = x + 26;
};
if ( (s[i] >= 'A') && (s[i] <= 'Z') ){
x = s[i]+K;
if (x > 'Z') x = x - 26;
if (x < 'A') x = x + 26;
}
printf("%c",x); };
printf("\n");
};
exit(0);
}

(2)
题意不清,是不是输入数在0-15之间。也就是4bit数。否则什么叫“最高位”?
只有4bit,也就是不必去做位运算,查表code[16][5]就可以了。
#include
void main(){
int d;
char code[16][5]={"0000","0001","0011","0010","0110","0111",
"0101","0100","1100","1101","1111","1110",
"1010","1011","1001","1000"};
printf("input n\n");
scanf("%d",&d);
printf("%s",code[d]);
}

回答2:

考虑到格雷码的用途,它的位数一般是固定的。所以,你应该说明转换几位的,这样有针对性。
下面我写的是八位的,很简单
#include
void main()
{
unsigned char a, b, c;
a = 0xff;
b = a >> 1;
c = a ^ b;
printf("%x",c); //输出十六进制,c即为所求格雷码
}
再说一句,格雷码与二进制码转换的公式:
格雷码第n位 = 二进位码第(n+1)位 异或 二进制码第n位

回答3:

nt main()
{
int m,l;
double r=1.0;
printf("please input m: ");
scanf("%d",&m);
for(l=2;l<=m;l++)
{
r=r-(1.0/(l*l));
}
printf("\nt=%f\n",r);
return 0;
}

2:
#include "stdio.h"
int main()
{
int l1,l2;
int matrix[4][4];

int diagonal[4];

for(l1=0;l1<4;l1++)//输入
for(l2=0;l2<4;l2++)
{
printf("\nplease input Row %d Column %d: ",l1,l2);
scanf("%d",matrix[l1]+l2);
}
printf("\nmain diagonal is:\n");
for(l1=0;l1<4;l1++)//取主对角线上的数
{
diagonal[l1]=matrix[l1][l1];
}

for(l1=0;l1<3;l1++)//排序
for(l2=l1+1;l2<4;l2++)
{
if(diagonal[l2] {
diagonal[l2]=diagonal[l2]^diagonal[l1];
diagonal[l1]=diagonal[l2]^diagonal[l1];
diagonal[l2]=diagonal[l2]^diagonal[l1];

}
}
for(l1=0;l1<4;l1++)//输出
{
printf("%d\t",diagonal[l1]);
}

printf("\n");
return 0;
}