C语言的题目

C语言的题目有如下程序段:
int x1, x2;
char y1, y2;
scanf("%d%c%d%c", &x1, &y1, &x2, &y2);
若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)
A.10A└┘20B B.10└┘A20B
C.10 └┘A└┘20└┘ B D.10A20└┘B

若变量已正确说明为float类型, 要通过语句scanf("%f %f%f", &a, &b, &c);给a赋予10.0, b赋予22.0, c赋予33.0, 不正确的输入形式为()。
A.10<回车> B.10.0,22.0,33.0<回车>
22<回车>
33
C.10.0<回车> D.10 22<回车>
22.0 33.0<回车> 33<回车>

有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)
int x1, x2;
char y1, y2;
scanf("%d%d", &x1,&x2);
scanf("%c%c", &y1,&y2);
A.1020AB B.10└┘20└┘ABC
C.10└┘20<回车> D.10└┘20AB
AB

有如下程序段,对应正确的数据输入是( )。
float x,y;
scanf("%f%f", &x,&y);
printf("a=%f,b=%f", x,y);
A.2.04<回车> B.2.04,5.67<回车>
5.67<回车>
C.A=2.04,B=5.67<回车> D.2.055.67<回车>

第1个回答  2015-11-27

  按照题目的逻辑,先输出上半边再输出下半边

  每一行先输出空格,再输出递增,最后输出递减序列

  代码如下:

void PrintLine(int n)
{
if(n<1 || (n>9)){
printf("错误,请输入1~9!\n");
return;
}
for (int i=1;i<=n;i++)//上半边三角形
{
for (int j=0;j<n-i;j++)//先打印空格
{
printf(" ");
}
for (int j=1;j<=i;j++)//再打印递增数值
{
printf("%d",j);
}
for (int j=i-1;j>0;j--)//再打印递减数值
{
printf("%d",j);
}
printf("\n");
}
for (int i=n-1;i>0;i--)//打印下半边
{
for(int j=n-i;j>0;j--){//打印空格
printf(" ");
}
for (int j=1;j<=i;j++)//递增
{
printf("%d",j);
}
for (int j=i-1;j>0;j--)//递减
{
printf("%d",j);
}
printf("\n");
}
}

int main(int argc, char* argv[])
{
PrintLine(5);
return 0;
}

第2个回答  2016-11-09
#include<stdio.h>
void compare(int a[],int b[],int number);
int main()
{
int arry1[400] = {0}; //int型的最大值为65536大于e的9次方
int arry2[200] = {0};
int i = 0;
int number= 0;
printf("Sample Input\n");
scanf("%d",&number);

for(i = 0;i<number*2;i++)
scanf("%d",&arry1[i]);
compare(arry1,arry2,number);

printf("Sample Output\n");
for(i = 0;i<number;i++) //打印数据处理后结果
{
printf("%d",arry2[i]);
printf("\n");
}
return 0;
}
void compare(int a[],int b[],int number) //比较函数,对一个数分解,并整除后比较。
{
int n = 0;
int k = 0;
int i = 0;
int j = 0;
int c = 0;
int d = 0;
int min = 0;
for(i =0;i<number*2;i++,j++) //共输入number*2个数据
{
n = a[i];
b[j] = a[i];
i++;
k = a[i];
for(c = 0;c<=n;c++)
for(d = 0;d<=n;d++)
{
if(d+c==n)
{
min = d / k + c / k; //找出最小值
if(b[j]>min)
b[j] = min; //赋值给b数据
}
}
}
}
测试了两组,没有问题。
第3个回答  2014-05-29
#include<stdio.h>

float cmp(int n,float val)
{
switch(n){
case 1:val = 1/2-1/2;break;
case 2:val = 2/3-1/2;break;
case 3:val = 3/4-1/2;break;
case 4:val = 4/5-1/2;break;
default:
val = 0;
printf(“input n error!\n”);
break;
}
return val;
}

int main()
{
int T, n;
folat val;
int i;

printf(“please input T:\n”);
scanf(“%d”, &T);
if (T<1) {
printf(“input T error\n”);
exit(1);
}

for (i=1;i<=T;++i) {
scanf(“%d”, &n);
val = cmp(n, val);
if (val==0)
exit(1);
val = (val*100+5)/100; //四舍五入
printf(“%.2f\n”,val);
}

return 0;
}

代码没有测试,你测一下试试吧 。
第4个回答  2011-01-15
1.函数声明错float *search(float(*pointf[4]));应该为float *search(float(*pointf)[4]);由下面的函数定义可以看出pointf为一个指针,指向4个元素的数组.
2.pointf赋值为score这个地址.score是二维数组的地址.可以将二维数组看成一维数组.即score[0]={60,70,80,90}},那么*pointf则是一维数组{60,70,80,90}的首地址.则*pointf+1就是{60,70,80,90}这个数组中第二个元素70的地址.那么*(*pointf+i)=score[0][i]
3.*(pointf+1)=score[1],是一个地址
第5个回答  2015-06-29
若是计算平均值,建议用float类型,int avg(int a[],int n)返回的是一个整型数据,在C语言中,3/2的整型值为1,数据精度很低。代码如下:
#include<stdio.h>
int avg(int a[] , int n);
int main()
{
int a[10]={1,2,3,
4,5,6,7,8,9,10};//测试数组,长度为10
printf("%d\n",avg(a,10));
return 0;
}
int avg(int a[],int n)
{
int i,avg=0;
for(i=0;i<n;i++)
{
avg+=a[i];
}
avg/=n;
return avg;
}
相似回答