当前位置:首页 » 编程语言 » c语言求助题目
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求助题目

发布时间: 2022-05-19 00:08:00

⑴ C语言编程题目求助

这里考虑你所学内容,尽可能用最基本的知识写,没有使用指针,结构,链表等内容。只用了基本知识和循环结构。其中strcpy函数只是字符串复制函数,如果没用过也可以自己写循环实现字符串复制。

(以后如果考虑多组数据的存储,建议数据定义结构体,可以用malloc动态申请内存,字符串交换初始化可以使用string.h下的memset以及相关函数,或使用链表)

#include<stdio.h>
#include<string.h>
intinx=1;
voidoutput(intn);
intmain()
{
intn;
while(1)
{
printf("Input%d: ",inx);
scanf("%d",&n);
output(n);
}
}
voidoutput(intn)
{
charname[n][20],nameSave[20]={0};
floath[n];
inti,j;
for(i=0;i<n;i++)
scanf("%s%f",name[i],&h[i]);
for(i=0;i<n;i++)//升序排序
for(j=i+1;j<n;j++)
if(h[j]<h[i])
{
nameSave[0]=0;
strcpy(nameSave,name[i]);
name[i][0]=0;
strcpy(name[i],name[j]);
name[j][0]=0;
strcpy(name[j],nameSave);
}
printf("Output%d: ",inx++);
for(i=0;i<n;i++)//打印
printf("%s",name[i]);
printf(" ");
}

⑵ C语言求助,题目有图,希望过程详细一些 。。。。

第一:对二维数组进行剖析

inta[8][8]是一个两维数组:a[行数][列数]就是8行,8列,

inta[8][8]={20,30,32,50,52,68,52,88,72,78,61,89,1,4,101,24,11,14,97,83};

inta[8][8]={{20,30,32,50,52,68,52,88},{72,78,61,89,1,4,101,24},{11,14,97,83}};

上面两行等效,第0、1行被完完整初始化,第2行部分初始化,没有被初始化的元素默认值为0.

第二:程序执行过程剖析

#include<stdio.h>

voidmain(void)

{

inti;

inta[8][8]={20,30,32,50,52,68,52,88,72,78,61,89,1,4,101,24,11,14,97,83};

for(i=0;i<6;i++)

{

printf("%d",a[i++][1+i]);

}

}

1).第一次执行

首先执行for(i=0;i<6;i++),i=0,判断i<6结果为TRUE然后执行下面一行

printf("%d",a[i++][1+i])时i=0,输出的是a[0][1]=30(0行,1列)

执行printf("%d",a[i++][1+i])后i++,i=1

最后执行for(i=0;i<6;i++)中的i++,i=2

2)第二次循环

首先执行for(i=0;i<6;i++),中的i<6结果为TRUE(此时i=2)

printf("%d",a[i++][1+i])时输出的是a[2][3]=83(2行,3列)

输出完毕后再执行完毕i++,i=3

最后执行for(i=0;i<6;i++)中的i++,i=4

3)第三次循环

首先执行for(i=0;i<6;i++)中的i<6结果为TRUE(此时i=4)

printf("%d",a[i++][1+i])时输出的是a[4][5]=0(4行,5列)

输出完毕后再执行i++,i=5

最后执行for(i=0;i<6;i++)中的i++,i=6

4)第四次循环

首先执行for(i=0;i<6;i++)中的i<6结果为FALSE(此时i=6)

循环结束

所以最终的输出结果为:30830

测试 验证结果

⑶ C语言求助,题目有图,希望过程详细一些!

A 、do循环先执行再判断,所以至少执行一次
B、continue语句是结束当前这一次代码的执行,继续下一次的判断及执行
C、break可以用在switch和所有循环中
D、break直接中断自身所在的循环,continue中断当前这一次
所以 A 是对的

⑷ C语言的题目,求助!!!

你好!!
#include<stdio.h>
voidmain()
{
unsignedchar*p1;
unsignedlong*p2;
p1=(unsignedchar*)0x801000;
p2=(unsignedlong*)0x810000;
printf("p1=%x\n",p1);
printf("p2=%x\n",p2);
p1=p1+5;
p2=p2+5;
printf("p1+5=%x\n",p1);
printf("p2+5=%x\n",p2);
}
结果:
p1=801000
p2=810000
p1+5=801005
p2+5=810014
Pressanykeytocontinue
解释:
p1=(unsignedchar*)0x801000;
是给指针变量赋值,即把十六进制0x801000放到字符指针变量中,即指针变量p1的值就是0x801000
p2=(unsignedlong*)0x810000;也是给指针变量赋值,同上
输出结果p1+5的值是801005,因为指针变量指向的值字符,加一表示指针向后移动一个字节,那么加5代表向后移动5个字节,所以输入801005
p5+5的值是801016,因为指针变量指向的长整形的,加一表示指针向后移动4个字节,那么加5代表向后移动20个字节,所以输入810014,(输出时十六进制)要是十进制就是810020了

⑸ C语言求助,题目

选D。

分析如下:
因为Line line();只是声明了一个函数叫line,这个函数会返回一个Line类的对象。

这只是一个函数声明而已,此语句并不会创建Line类的对象,因此不会调用构造函数,也不会调用析构函数。

但因为这里只有函数声明而没有定义函数,因此可能有警告,也可能报错。

⑹ C语言求助题目有图,希望过程详细一些

if(++a<9) 因为++a是先加(也就是先进行自加1再做判断),所以a自加1后变为10,再判断10<9,因为不成立,所以会输出下面的a--,而a--是后减,也就是先用a的值,在这一行结束后a才自减1,所以printf的时候a还是10不变,所以结果即为C
另外,图上两行printf都有语法错误,但是题目本身理解没有影响