一道C语言题目
1△2<CR>
A△B△C<CR>
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是
A.scanf("x=%d y=%d",&x,&y);a=getchar();b=getchar();c=getchar();
B.scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();
C.scanf("%d%d%c%c%c",&x&y&a&b&c);
D.scanf("%d%d%c%c%c%c%c%c",&x&y&a&a&b&b&c&c);
答案是D,我不懂的是为什么A错了,谢谢指导。 展开
#include<stdio.h>
#include<stdlib.h>//头文件
#include <time.h>//头文件
int main()
{
int a[111],b[100],c[111],n,m,k=0,t,l=0,s;
scanf("%d%d",&n,&m);
srand((unsigned)time(NULL));//srand()就是给rand()提供种子
for(int i=0;i<50;i++)
{
a[i]=rand()%101;//对101取余;
}
for(int i=0;i<50;i++)
{
if(a[i]>n&&a[i]<=m)
{
c[l++]=a[i];//这个供冒泡排序用;
b[k++]=a[i];//这个供选择排序用;
printf("%d ",a[i]);//未排序前的序列;
}
}
printf("\n");
for(int i=0;i<k-1;i++)//选择排序
{
for(int j=i+1;j<k;j++)
{
if(b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
}
for(int i=0;i<l;i++)//冒泡排序
{
for(int j=0;j<l-i-1;j++)
{
if(c[j]>c[j+1])
{
s=c[j];
c[j]=c[j+1];
c[j+1]=s;
}
}
}
for(int i=0;i<k;i++)
{
printf("%d ",b[i]);
}
printf("\n");
for(int i=0;i<l;i++)
{
printf("%d ",c[i]);
}
return 0;
}
根据你给的信息,代码大致就是这样;可能有些瑕疵,你再根据原题修改一下;希望能帮到你,望采纳;
B、C不对。我只说D为什么对。因为按照题干这种输入,其输入中有空格,而getchar()把空格也当成字符来处理,所以应按D这种形式。希望对你有所帮助。
2、第一行输入的回车<CR>也是字符会进入a,而b获得A; c获得空格
1.scanf("x=%d y=%d",&x,&y);里面不能增加x= y= 这样的字符
2.第一行的<CR>会进入a,b获得A