1)有以下程序 #include <stdio.h> main() { int a1,a2; char c1,c2; scanf(“%d%c%c”,&a1,&c1,&a2,&c2); printf(%d,%c,%d,%c,a1,c1,a2,c2); } 若想通过键盘输入,使得a1的
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 02:44:58
1)有以下程序 #include <stdio.h> main() { int a1,a2; char c1,c2; scanf(“%d%c%c”,&a1,&c1,&a2,&c2); printf(%d,%c,%d,%c,a1,c1,a2,c2); } 若想通过键盘输入,使得a1的
1)有以下程序 #include <stdio.h> main() { int a1,a2; char c1,c2; scanf(“%d%c%c”,&a1,&c1,&a2,&c2); printf(%d,%c,%d,%c,a1,c1,a2,c2); } 若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出的结果是:12,a,34,b则正确的输入格式是(以下︿代表空格,<CR>代表回车) A)12a34b<CR> B)12︿a︿34︿b<CR> C)12,a,34,b<CR> D)12︿a34︿b<CR> 选A,为什么? 2)有以下程序#include <stdio.h>void fun( int *a,int *b){int *c;c=a;a=b;b=c;}main(){int x=3,y-5,*P=&x,*q=&y; fun(p,q);printf(“%d,%d,”,*p,*q);fun(&x,&y);printf(“%d,%d\n”,*p,*q);}程序运行后的输出结果是A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3 选B,为什么? 3)若有以下定义 int x[10],*pt=x;则对x数组元素的正确应用是A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3 答案是B,为什么C不行? 4)#include <stdio.h>int b=2;int fun(int *k){ b=*k+b;return (b);}main(){ int a[10]={1,2,3,4,5,6,7,8},I; for(i=2;i<4;i++) {b=fun(&a)+b;printf(“%d”,b);} printf(“\n”);}程序运行后输出的结果是A)10 12 B)8 10 C)10 28 D)10 16 选C,为什么?
1)有以下程序 #include <stdio.h> main() { int a1,a2; char c1,c2; scanf(“%d%c%c”,&a1,&c1,&a2,&c2); printf(%d,%c,%d,%c,a1,c1,a2,c2); } 若想通过键盘输入,使得a1的
(1)因为scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);对应的输入格式为:12a34b
整型数据之间的输入用空格隔开 如scanf(“%d%d”,&a,&b):输入格式为:12 34
但若为字符型 不能用空格隔开 如scanf("%c%c",&c,&d);输入格式为:ab 中间不能有空格;若有空格,因为空格也是一个字符,就会被读入.
(2)在函数里,要想真正改变参数的值,必须使用指针.
而函数void fun( int *a,int *b)
{
\x09int *c;
\x09c=a;
\x09a=b;
\x09b=c;
}的功能,只是指针间的交换,并没有涉及其指向的内容.若想真正改变指针p,q指向的值.需改为:
void fun( int *a,int *b)
{
\x09int c;
\x09c=*a;
\x09*a=*b;
\x09*b=c;
}
故答案为3 5 3 5
(3)正确答案是B
A数组越界
B正确
C数组越界(A和C表示都是正确的,只是数组越界)
D题目是关于对X数组元素的应用,pt+3算的是元素的地址,不合题意