2级C语言的几道题,有答案,谁能给解释一下原理

来源:百度知道 编辑:UC知道 时间:2024/05/08 03:55:48
8有以下程序
#include <stdio.h>
main( )
{ char c1,c2;
scanf(“&c”,&c1);
while(c1<65||c1>90) scanf(“&c”,&c1);
c2=c1+32;
printf(“&c, &c\n”,c1,c2);
}
程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8】 。

(9)以下程序运行后的输出结果是【9】
#include <stdio.h>
main( )
{int k=1,s=0;
do{
if{((k&2)!=0)continue;
s+=k;k++;
}while(k)10);
printf(“s=&d/n”,s);
}

(10)下列程序运行时,若输入labced12df<回车> 输出结果为【10】
#include <stdio.h>
main( )
{char a =0,ch;
while((ch=getchar())!=’\n’)
{if(a&2!=0&&(ch>’a’&&ch<=’z’)) ch=ch-‘a’+’A’;
a++;putchar(ch);
}
printf(“\n”);
}
(11)有以下程序,程序执行后,输出结果是【11】
#include <stdio.h>
void fun (int *a)
{a[0=a[1];]}
main()
{int a[10]={10,9,8,7,6,5,4,3,2,1},i;
for(i=2;i>=0;i--) fun{&a};
for(i=0;i<10;i++) printf(“&d”,a);
printf(“\n”);

8.char型 都可以用int型表示
例如 int型 97 就相当于 char的 a
char c=97;的意思就是 char c = ‘a’;
这个题输入65时,不执行if语句 直接执行c2=c1+32;
输出为 A a
9.实在搞不懂这个题什么意思 while的循环条件是什么?
& 的意思是 按位与 0&0=0 0&1=0 1&0=0 1&1=1
例如:1&2
1的二进制表示为 01 2的二进制表示为10
1&2 = 0
10.(ch=getchar())!=’\n’的意思是接受键盘输入的回车
当键盘输入回车的时候执行while内的语句
if(a&2!=0&&(ch>’a’&&ch<=’z’)) ch=ch-‘a’+’A’;
a&2刚才解释过了,还是 按位与
ch>’a’&&ch<=’z’的意思就是在 b 到 z 之间的字母
11. for(i=2;i>=0;i--) fun{&a};
应该是for(i=2;i>=0;i--) fun(a+i);吧
函数void fun (int *a)的作用是读取一个数组的首地址,并将这个数组的第一个元素的值修改成第二个元素的值
fun(a+i)是调用这个函数,a是数组首地址a+i是第i+1个元素的地址(数组是从0开始的)
12.(*p)(int,int);是一个函数指针,它本身是一个指针,指向一个函数
正确使用方法
#include<stdio.h>
int max(int x,int y){ return(x>y?x:y); }

void main()
{
int (*ptr)(int, int);
int a,b,c;
ptr=max;
scanf("%d,%d",&a,&b);
c=(*ptr