两道c语言题目求解
第一题:#include
void main(void)
{
int a=0,b=0,c=0,total=0;
int i,j,k;
for(i=1,j=1,k=1;i<=10;i++,j++,k++)
{
if(i%3==0) a++; //如果是3秒的整数,加一次
if(j%5==0) b++; //如果是5秒的整数,加一次
if(k%7==0) c++; //如果是7秒的整数,加一次
if((i%3==0&&j%5==0)||(i%3==0&&k%7==0)||(j%5==0&&k%7==0)) a--;//如果是2种重合,则多算一次,应该减一次
if(i%3==0&&j%5==0&&k%7==0) a-=2; //如果是3者的公倍数,则多算2次
total=a+b+c;
}
printf("%d",total);
getch();
}
第二题:#include
void main(void)
{
int a,b,c,d; //分别代表50,20,10,5元的张数
int count=1; //存储换的种类数
int money;
for(a=1;a<10;a++)
for(b=1;b<25;b++)
for(c=1;c<50;c++)
for(d=1;d<100;d++)
{
money=50*a+20*b+10*c+d;
if(money==500)
{
printf("第%d种换法是,%d张50元,%d张20元,%d张10元,%d张5元
",count,a,b,c,d);
count++;
}
}
}
(1)
#include
void main(){
int i,j,n,K;
char s[100],x;
scanf("%d",&n);
for (j=0;j<n;j++){
scanf("%d
",&K);
gets(s);
for (i=0;i<strlen(s);i++) {
x = 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("
");
};
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
");
scanf("%d",&d);
printf("%s",code[d]);
}
#define f(x)(x*x)
main()
{int i1,i2;
i1=f(8)/f(4); //看一下除数
i2=f(4+4)/f(2+2);//除数
printf("%d,%d\n",i1,i2);
}
这样答案就是C,
第二道题,题目可以这样看
main()
{
struct cmplx
{
int x;
int y;
}cnum[2];
cnum[0].x=2;
cnum[0].y=4;
cnum[1].x=3;
cnum[1].y=1;
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].y);
}
第三题 c1='1'对应的是字符1,对应的十进制为49;
如果c1=49,则等同于c1='1'字符;
而c1=1对应的是ASCII第二个字符,也就是这个“☺”
第一题:i1=(8*8)/(4)=16 i2=(4+4*4+4)/(2+2)=6
我看原题的意思应该是
#define f(x)(x*x)
main()
{int i1,i2;
i1=f(8)/f(4);
i2=f(4+4)/f(2+2);
printf("%d,%d\n",i1,i2);
}
结果才会选c
实践就是最好的证明,我运行过了。结果就是16,6
第二题不能运行,乱七八糟的错误一大堆。
第三题:include前面要加 # .
至于你问的问题??
你是不是想说char类型变量赋值如果是数字就不能用‘’括起来(记住,字符串的话用双引号,单个字符都是用单引号的)?ASCLL码里面有0-9这几个数字,他们可以是字符,也可以是数值。原题有加单引号,是字符。
第一道:#define f(x)(x*x)这个宏替换将i1=f(8)/(4)替换为:i1=(8*8)/(4*4);i2=f(4+4)/(2+2)=4;替换成:i2=(4+4*4+4)/(2+2*2+2)=3;其实,宏替换就好比复制,它只是机械性负责复制,而不会识别运算符的优先级之类,所以用的时候要特别小心
第二道问题是问题,cnum[2]={2,4,3,1}结构不明,不知道是你抄错还是什么原因;
第三,在C语言中,是把双引号中的数据看成字符的,而不数据,就比如"1",这样的表示说明它只是一个字符,而不是表示大小的数据。。。
1.
i1=f(8)/(4);
经过宏替换后就成了:
i1=(8*8)/(4);
所以i1=16
i2=f(4+4)/(2+2);
经过宏替换后就成了:
i2=(4+4*4+4)/(2+2);
所以,i2=6
所以i2<i1,而且答案是错的.
2.
struct cmplx{int x,int y} cnum[2]={2,4,3,1}
这个式子定义了一个struct cmplx类型的结构体数组cnum,它有两个该结构体类型的元素,cnum[0]和cnum[1],cnum[0]有两个成员变量,分别是cnum[0].x和cnum[0].y,而且在定义时分别被初始化为2和4,cnum[1]也有x和y两个成员变量并且在定义时被初始化为3和1
3.
后面的'1'和'2'都是字符,不是整数1和2
相关视频
两道c语言题目求解
int y;}cnum[2];cnum[0].x=2;cnum[0].y=4;cnum[1].x=3;cnum[1].y=1;printf("%d\\n",cnum[0].y\/cnum[0].x*cnum[1].y);} 第三题 c1='1'对应的是字符1,对应的十进制为49;如果c1=49,则等同于c1='1'字符;而c1=1对应的是ASCII第二个字符,也就是这个“ϒ
两道C语言题目,求答案和解析,谢谢~
B:y==1是一个逻辑表达式,从题干得出其值为0,再将其赋值给x,最终结果是x被赋值0。C:i=float...
C语言练习题两道并解释下原因
第一题:选D 是整除取余,参与运算的两个数都是整型。(int)表示强制取整。对于本题,正确格式:(int)f%i,因此其它三个选项都是错误的。第二题:i的值是30 逗号运算符,按顺序逐一执行表达式,并以最后一个表达式的值作为结果。执行a=2*3,得到a=6,执行a*5,得到30,并将30赋值给i,i的值...
求两道C 语言题目解释,谢谢
2.在C语言中,不正确的int类型的常数是A A) 32768 B) 0 C) 037 D) 0xAF 3 设有如下定义:int x=l,y=-1;,则语句:printf("%d\\n",(x--&++y));的输出结果是B A) 1 B) 0 C) -1 D) 2 \/\/分析 2.这个题是早期的TC等16位编译系统中的题,在16位编译...
求C语言大神给解答一下。。。两道题
4.||和&&在运算时都是从左到右看的;如:若 ||的左边为1,编译器就直接认为表达式为 1 ,不会看右边了;若 && 左边为 0;整个表达式就直接为 0,也不看左边了;所以此题中只有 a 做了运算;5.有逗号运算符时,表达式的值为最后一个运算的值;如 n=(1+1 , 1+2); 则n=3;第...