C语言 问题 跪求大神解答 请看照片

作者&投稿:微梅 (若有异议请与网页底部的电邮联系)
关于C语言的一个题目,如图,跪求详细解答,大神请进.~

D 1,2
循环第一次后:a = -1, b = 1;
第二次后 a=0, b=2
第三次后 a=1, b=2
因为a=0时,++b不再执行,但a++会执行

#include #include #include int compute(int m, int n, char op){switch(op) {case '+': return m+n;case '-': return m-n;case '*': return m*n;case '/': return m/n;}}int genExpression(char *exp, char c){int m, n;char op[4] = {'+', '-', '*', '/'};srand((unsigned)time(NULL));m = rand()%10+1;n = rand()%10+1;if(c == '?')c = op[rand()%4];if(c == '/')while(n == 0 || m%n != 0) n = rand()%10+1;else if(c == '-')while(n > m) n = rand()%10+1;sprintf(exp, "%d %c %d = ?", m, c, n);return compute(m, n, c);}int doTask1(){char exp[20];int result, answer;result = genExpression(exp, '*');while(1) {puts(exp);scanf("%d", &answer);if(result == answer) {printf("Right!
");return 1;}printf("Wrong! Please try again!
");}}int doTask2(){char exp[20];int i, result, answer;result = genExpression(exp, '*');for(i = 0; i < 3; i++) {puts(exp);scanf("%d", &answer);if(result == answer) {printf("Right!
");return 1;}if(i == 2)printf("Wrong! You have tried three times! Test over!
");else printf("Wrong! Please try again!
");}return 0;}int doTask3(){char exp[20];int i, result, answer, score = 0;for(i = 0; i < 10; i++) {result = genExpression(exp, '*');puts(exp);scanf("%d", &answer);if(result == answer) {printf("Right!
");score += 10;}else printf("Wrong!
");}printf("Your score is %d. You answered %d%% questions right
", score, score);return 1;}int doTask4(){char exp[20];int i, result, answer, score = 0;for(i = 0; i < 10; i++) {result = genExpression(exp, '?');puts(exp);scanf("%d", &answer);if(result == answer) {printf("Very good!
");score += 10;}else printf("Wrong!
");}printf("Your score is %d. You answered %d%% questions right
", score, score);return 1;}main(){printf("
Do task 1
");doTask1();printf("
Do task 2
");if(doTask2() == 0)return 0;printf("
Do task 3
");doTask3();printf("
Do task 4
");doTask4();}

15是错的,字符串只能在初始化复制,这样的话只能一个一个赋值例如a[0]='1'之类的
19是对的,array1是一个存储了数组首个元素地址的指针,故赋值正确
20的说明看不见…………但格式应该是没问题

15 正确程序!
第6行 字符串的赋值!
1 #include<stdio.h>
2 #include<string.h>
3 int main(void)
4 {
5 char p[80];
6 // p="123456789";
7 strcpy(p,"123456789");
8 printf("%s\n",p);
9 return 0;
10 }
~
19\ 20 看不清题目 貌似是对的!

我看了一下回答,解释不完全正确,特别是第15题,所以我再来回答一下:
15 错误。因为char p[80],p是个数组名字,是数组的首地址,注意:所以p是个地址常量;=赋值运算符要求左边必须为变量,所以既然p是个常量,那么下面的p="123456789";这样的操作就是错误的。
19 正确
20 正确

15、对字符串赋值不能使用=操作符,请使用snprintf(),strcpy(),memcpy()等函数执行格式化或拷贝操作。15是错的,字符串只能在初始化复制,这样的话只能一个一个赋值例如a[0]='1'之类的
19是对的,array1是一个存储了数组首个元素地址的指针,故赋值正确
20的说明看不见…………但格式应该是没问题

15、对字符串赋值不能使用=操作符,请使用snprintf(),strcpy(),memcpy()等函数执行格式化或拷贝操作。


共和县17257865733: c语言问题,求大神解答!给一个不多于5位的正整数.①求出它是几位数.②分别输出每一位数字.③按逆序输出各位数字.例如原数位465,应输出5 6 4.... -
赫景佳元:[答案] #include#include#includeint main(){int num,tmp,i,j;int n[5]={0};//用于存储num分解后的每位上的数字,由于num不超过5位,所以数组有5个单元就可以了 int *sq_ls_num;printf("请输入一个不多于5位的正整数: ");sc...

共和县17257865733: C语言问题,求高手解答.:C语言问题,小白勿入描述:FOR语句循环,我们假定有三个循环.当程序运行到一定程度时怎样让语句从第三个循环返回时直... -
赫景佳元:[答案] 如果只是单纯的实现问题的功能. goto语句就可以了.(虽然goto有点不利于程序可读.但是这里用goto是最直接的方法.) 下面是伪代码: firstFor: for(参数)//第一个for循环 { for(参数)//第2个for循环 { for(参数)第3个fo...

共和县17257865733: 跪求C语言大神解答,急用急用,谢谢大哥大姐们解答. 急需C语言大神,必有重谢 -
赫景佳元: #include <stdio.h> int main() { int n,i; double s=0; scanf("%d", &n); for(i=2;i<=n;i+=2) { s+=1.0/i; } printf("%lf", s); return 0;}

共和县17257865733: 高分急求!C语言编程问题,求高手解答 -
赫景佳元: 1、首先第四行是定义的一个子函数,在主函数内部定义的所以后面要加分号2、设定abc三个变量是题目所需,因为比较大小两个数来比较第三个变量来保存比较结果,你也可以设定两个变量,把比较结果保存到输入值中不过就会覆盖原来的值3、Z是一个子函数变量,设定在主函数中在子函数不能使用,z的生存期只有在那个max函数中才会分配内存空间4、第18行没有出来,第16行倒是可以给你解释哈,在16行他是返回比较值保存在z当中的然后在第7行那个c就会接收到max的比较结果

共和县17257865733: C语言题目,跪求大神解答!!! -
赫景佳元: #include <stdio.h>#include <stdlib.h>#include <string.h> void reverse(char s[]) //思路:第一个和最后一个交换.第二个和倒数第二个交换.交换次数是总字母个数的1/2取整.{ char tmp; int count = 0; int i = 0; int j = 0; if(s == NULL) { printf("传入的...

共和县17257865733: C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因 -
赫景佳元: 已修改,看注释#include int main() { char a[20],b[20],c[50],*p1,*p2,*p3; p1=a,p2=b,p3=c; gets(a); while(*p1) { *p2 = (*p1)+3; //对字符串中的每个字符用加3的方法加密并存入数组b p1++; p2++; }*p2='\0'; //串结束符 p2=b ; //p2重新指向b的开始位置 while(*p2) { *p3 = (*p2)-3; //对b中的字符串解密存入数组c p3++; p2++; }*p3='\0'; puts(a); //puts是输出一个串 puts(b); puts(c); return 0; }

共和县17257865733: c语言问题 求大神解答 -
赫景佳元: 按题中的意思就是两个瓶子换一瓶汽水(不含瓶子),所以下面的代码就搞定了#include int main() { int n,i,a,b,sum=0; scanf("%d",&n); if(n sum = 0; } else { //两个以上可以换 sum = n/2; //直接除以2,因为int类型所以多一个瓶子也不影响 } printf("%d\n",sum); //这是答案 return 0; }

共和县17257865733: 跪求C语言大神解决这些C语言判断题 -
赫景佳元: 正确 必须打开 正确 指针是地址 指针地址是存放地址的变量 错误 不解释了 函数没形参靠什么传值? 正确 字符串可以这么初始化 正确 do while不满足条件至少一次 while不满足一次也不执行 错误 str[10]边界溢出 最大是str[9] 错误 可以没有else 错误 应该是a%2 == 0 错误 'a'是合法字符常量,"a"是字符串常量 错误 赋值号左边必须是变量、属性或索引器

共和县17257865733: C语言题目,求大神解答~!!! -
赫景佳元: 这是一个字符串检索问题://在S字符串中检索子串T(模式匹配) int Index(char *S, char *T){ int i,j,lenS,lenT; for(lenS=0;S[lenS];++lenS); for(lenT=0;T[lenT];++lenT); i=1;j=1; while(i if(S[i-1]==T[j-1]){ ++i;++j; }//匹配,一起后移 else {i=i-j+2;j=1;if(i>...

共和县17257865733: C语言作业题 跪求高手解答 写程序
赫景佳元: #include<stdio.h> void check() { int i,count; for(i=0;i<3;i++) { scanf("%d",&count); if(count==8888) { printf("You are welcome!\n"); return; } else printf("Wrong password!\n"); } return; } void main() { check(); } 希望对LZ有帮助,希望采纳

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网