❶ c语言数组题
1题:
#include <stdio.h>
main()
{
int a[10]={89,90,84,78,84,67,88,92,79,73};
int i,j=0;
float aver,sum=0;
for(i=0;i<10;i++)
{
sum+=a[i];
}
aver=sum/10;
printf("%4.2f",aver);
for(i=0;i<10;i++)
{
if(a[i]<aver)
j++;
}
printf("di yu pingjun ren shu:%d",j);
getch();
}
2题:
#include <stdio.h>
#include <math.h>
struct stu
{
float yuwen;
float shuxue;
float yingyu;
}stu[10];
main()
{
int i;
float sum1=0,sum2=0,sum3=0;
float ave1,ave2,ave3;
printf("qing shuru chengji:");
for(i=0;i<简衡10;i++)
{
scanf("%f%f%f",&stu[i].yuwen,&stu[i].shuxue,&stu[i].yingyu);
printf("\n"吵咐裂);
}
for(i=0;i<10;i++)
{
sum1+=stu[i].yuwen;
sum2+=stu[i].shuxue;
sum3+=stu[i].yingyu;
}
ave1=sum1/10;
ave2=sum2/10;
ave3=sum3/升闭10;
printf("yuwen pingjun ; %f\n",ave1);
printf("shuxue pingjun ; %f\n",ave2);
printf("yingyu pingjun ; %f\n",ave3);
getch();
}
3题:
#include <stdio.h>
main()
{
int a[8][8],i,j;
for(i=0;i<8;i++)
{
a[i][i]=1;
a[i][0]=1;
}
for(i=2;i<8;i++)
for(j=1;j<8;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<8;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
❷ 编一个C语言程序实现从一个字符型数组变量中找出一个标志字符0xff并将该标志字符后的二个字符对应的数字相
下面是C语言的一些题及题形(附答案):
一、选择题((1)-(40)题每题1分,(41)-(50)题每题2分,共60分)
下列各题A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 计算机的存储器完整的应包括
A) 软盘、硬盘 B) 磁盘、磁带、光盘
C) 内存储器、外存储器 D) RAM、ROM
(2) 计算机中运算器的作用是
A) 控制数据的输入/输出 B) 控制主存与辅存间的数据交换
C) 完成各种算术运算和逻辑运算 D) 协调和指挥整个计算机系统的操作
(3) 软磁盘处于写保护状态时,其中洞念记录的信息
A) 绝对不会丢失
B) 不能被擦除,但能追加新信息
C) 不能通过写磁盘操作被更新
D) 不能以常规方式被删除,但可以通过操作系统的格式化功能被擦除
(4) 光盘根据基制造材料和记录信息的方式不同,一般可分为
A) CD、VCD
B) CD、VCD、DVD、MP3
C) 只读光盘、可一次性写入光盘、可擦写光盘
D) 数据盘、音频信息盘、视频信息盘
(5) 在计算机系统中,可执行程序是
A) 源代码 B) 汇编语言代码 C) 机器语言代码 D) ASCII码
(6) 计算机软件系统包括
A) 操作系统、网络软件 B) 系统软件、应用软件
C) 客户端应用软件、服务器端系统软件 D) 操作系统、应用软件和网络软件
(7) 目前,一台计算机要连入Internet,必须安装的硬件是
A) 调制解调器或网卡 B) 网络操作系统
C) 网络查询工具 D) WWW浏览器
(8) 在多媒体计算机系统中,不能存储多或如媒体信息的是
A) 光盘 B) 磁盘 C) 磁带 D) 光缆
(9) 要将当前盘当前目录下一个文本文件内容显示在屏幕上,正确的命令形式是
A) TYPE a*.* B) TYPE east.exe
C) TYPE pro.c>PRN D) TYPE zfc.txt
(10) 下列更改文件名的命令中正确的是
A) REN A:file1 C:F1 B) RENAME A: A:file1 C:F1
C) REN A:file1 F1 D) REN A:file1 \SUB\F1
(11) 已知A盘为DOS系统启动盘,只有A:\DOS下有自动批处理文件,其中内容为:
CD\DOS
MD USER
CD USER
由A盘启动DOS系统后,A盘的当前目录是
A) \DOS B) \DOS\USER C) \ D) \USER
(12) MS-DOS是
A) 分时操作系统 B) 分布式操作系统
C) 单用户、单任务操作系统 D) 单用户、多任务操作系统
(13) 在Windows操作系统中,不同文档之间互相复制信息需要借助于
A) 剪切板 B) 记事本 C) 写字板 D) 磁盘缓冲器
(14) 在Windows操作系统中
A) 同一时刻可以有多个活动窗口
B) 同一时刻可以有多个应用程序在运行,但只有一个活动窗口
C) 同一时刻只能有一个打开的窗口
D) DOS应用程序窗口与Windows应用程序窗口不能同时打开着
(15) 下列叙述中正确的是
A) 所有DOS应用程序都可以在Windows操作系统中正确运行
B) 所有DOS应用程序都不能在Windows操作系统中正确运行
C) 大部分DOS应用程序可以在Windows操作系统中正确运行
D) 为DOS5.0以上版本操作系统编写的应用程序可以在Windows操作系统中正确运行
(16) 下列叙述中正确的是
A) C语言编译时不检查语法
B) C语言的子程序有过程和函数两种
C) C语言的函数可以嵌套定义
D) C语言所有函数都是外部函数
(17) 以下所列的C语言常量中,错误的是
A) 0xFF B) 1.2e0.5 C) 2L D) '\72'
(18) 下列选项中,合法的C语言关键字是
A) VAR B) cher C) integer D) default
(19) 以下变量x.、y、z均为double类型且已正确纳团困赋值,不能正确表示数学式子的C语言表达式是
A) x/y*z B) x*(1/(y*z)) C) x/y*1/z D) x/y/z
(20) 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是
A) -3 B) 9 C) -12 D) 6
(21) 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为
A) 不定值 B) 4 C) 3 D) 1
(22) 若变量已正确说明为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<回车>
(23) 若执行以下程序时从键盘上输入9,则输出结果是
A) 11 B) 10 C) 9 D) 8
Main0
{ int n;
scanf("%d",&n);
if(n++<10) printf("%d\n",n);
else printf("%d\n",n--);
}
(24) 若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是
A) swich(a+b); B) switch(a*a+b*b)
{ case 1:y=a+b; break; {case 3:
case 0:y=a-b; break; case 1:y=a+b;break;
} case 3:y=b-a,break;
}
C) switch a D) switch(a-b)
{ case c1 :y=a-b; break {default:y=a*b;break
case c2: x=a*d; break case 3:case 4:x=a+b;break
default:x=a+b; case 10:case 11:y=a-b;break;
} }
(25) 有以下程序段
int k=0
while(k=1)k++;
while 循环执行的次数是
A) 无限次 B) 有语法错,不能执行
C) 一次也不执行 D) 执行1次
(26) 以下程序执行后sum的值是
A)15 B)14 C) 不确定 D)0
min()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
}
(27) 有以下程序段
int x=3
do
while (!(--x));
其输出结果是
A) 1 B) 3 0 C) 1 -2 D) 死循环
(28) 若变量c为char类型,能正确判断出c为小写字母的表达式是
A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')
C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')
(29) 以下所列的各函数首部中,正确的是
A) void play(var :Integer,var b:Integer)
B) void play(int a,b)
C) void play(int a,int b)
D) Sub play(a as integer,b as integer)
(30) 以下程序的输出结果是
A) 0 B) 29 C) 31 D) 无定值
fun(int x, int y, int z)
main()
{ int a=31;
fun(5,2,a);
printf("%d",a);
}
(31) 下列程序段的输出结果是
A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2
void fun(int *x, int *y)
main()
{ int x=1,y=2;
fun(&y,&x);
printf("%d %d",x, y);
}
(32) 下列程序的输出结果是
A) 非法B)a[4]的地址 C)5 D)3
main()
,*p=a+5;
printf("%d",*--p);
}
(33) 下列程序的运行结果是
A) 6 3 B) 3 6 C) 编译出错D) 0 0
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
main()
{ int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
printf("%d %d", a, b);
}
(34) 下面程序的输出结果是
A) 0 B) 1 C) 10 D) 9
main()
,*p;
p=a;
printf("%d\n",*p+9);
}
(35) 当调用函数时,实参是一个数组名,则向函数传送的是
A) 数组的长度 B) 数组的首地址
C) 数组每一个元素的地址 D) 数组每个元素中的值
(36) 设有以下说明语句
struct ex
example;
则下面的叙述中不正确的是
A) struct结构体类型的关键字 B) example是结构体类型名
C) x,y,z都是结构体成员名 D) struct ex是结构体类型
(37) 以下只有在使用时才为该类型变量分配内存的存储类说明是
A) auto和static B) auto和register
C) register和static D) extern和register
(38) 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
A) EOF B) -1 C) 非零值 D) NULL
(39) 以下程序的输出结果是
A) 20 B) 21 C) 22 D)23
main()
{ int i, k, a[10], p[3];
k=5;
for (i=0;i<10;i++) a[i ]=i;
for (i=0;i<3;i++) p[i ]=a[i *(i+1)];
for (i=0;i<3;i++) k+=p[i] *2;
printf("%d\n",k);
}
(40) 以下程序的输出结果是
A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9
main()
;
for(i=0;i<3;i++) printf("%d,",x[i][2-i]);
}
(41) 以下程序的输出结果是
A) 18 B) 19 C) 20 D)21
main()
,, },i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%dn",s);
}
(42) 以下程序的输出结果是
A) ABCD B) ABCD C) EFG D) EFGH
FGH EFG JK IJKL
KL IJ O
M
main()
,k;
for(k=1;k<3;k++) printf("%s\n",w[k]);
}
(43) 当执行下面的程序时,如果输入ABC,则输出结果是
A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789
#include "stdio.h"
#include "string.h"
main()
{ char ss[10]="1,2,3,4,5";
gets(ss); strcat(ss, "6789"); printf("%s\n",ss);
}
(44) 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
PROG ABCDEFGH IJKL<回车>,则输出结果为
A) ABCDEFG B) IJHL C) ABCDEFGHIJKL D) IJKLABCDEFGH
main( int argc, char *argv[]))
{ while(--argc>0) printf("%s",argv[argc]);
printf("\n");
}
(45) 以下程序的输出结果是
A) 1 B) 2 C) 3 D) 4
long fun( int n)
{ long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
(46) 以下程序的输出结果是
A) 16 B) 2 C) 9 D) 1
#define SQR(X) X*X
main()
{ int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("d\n",a);
}
(47) 若定义了以下函数:
void f(......)
{......
*p=(double *)malloc( 10*sizeof( double));
......
}
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是
A) double *p B) float **p C) double **p D) float *p
(48) 以下程序的输出是
A) 10 B) 11 C) 51 D) 60
struct st
*p;
int dt[4]=;
struct st aa[4]=;
main()
{ p=aa;
printf("%d\n",++(p->x));
}
(49) 假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是
A) free(q); p->next=q->next;
B) (*p).next=(*q).next; free(q);
C) q=(*q).next; (*p).next=q; free(q);
D) q=q->next; p->next=q; p=p->next; free(p);
(50) 以下程序的输出结果是
A) 0 B) 1 C) 2 D) 3
main()
{ int x=0.5; char z='a';
printf("%d\n", (x&1)&&(z<'z') ); }
二) 填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡至序号的横线上,答在试卷上不得分。
(1) 计算机机领域中,通常用英文单词“Byte"表示。
(2) 在DOS环境下,自动批处理的文件名为。
(3) 要将当前盘当前目录下所有扩展名为.TXT的文件内容在打印机上打印输出,应使用的单条DOS内部命令为。
(4) 在Windows环境下,可以利用单击、双击、拖动这三种鼠标操作之一的操作实现窗口的移动。
(5) 在Windows环境下,可以将窗口最小化为。
(6) 以下程序的输出结果是
main()
{ int a=1, b=2;
a=a+b; b=a-b; a=a-b;
printf("%d,%d\n", a, b );
}
(7) 下列程序的输出结果是16.00,请填空。。
main()
{ int a=9, b=2;
float x= , y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n", z );
}
(8) 用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*) ;
(9) 下列程序段的输出结果是。
main()
{ char b[]="Hello,you";
b[5]=0;
printf("%s \n", b );
}
(10) 下列程序段的输出结果是。
int n='c';
switch(n++)
{ default: printf("error");break;
case 'a':case 'A':case 'b':case 'B':printf("good");break;
case 'c':case 'C':printf("pass");
case 'd':case 'D':printf("warn");
}
(11) 以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句。
void fun(int *x,int *y)
main()
{ int a=10,b=20;
; /定义变p */
p=fun; p(&a,&b);
......
}
(12) 下列程序的输出结果是。
void fun(int *n)
{ while( (*n)--);
printf("%d",++(*n));
}
main()
{ int a=100;
fun(&a);
}
(13) 以下程序的输出结果是。
main()
, *p=arr;
p++;
printf("%d\n",*(p+3));
}
(14) 以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
struct st
;
main()
{ struct st ex;
printf("ex size: %d\n",sizeof( ));
}
(15) 下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。
#include "stdio.h"
FILE *fp;
{ char ch;
if( (fp=fopen ( ) )= = NULL)exit(0);
while( (ch=getchar( )) !='@') fputc (ch,fp);
fclose(fp);
}
(16) 若变量n中的值为24,则prnt函数共输出行,最后一行有个数。
void prnt(int n, int aa[ ])
{ int i;
for(i=1; i<=n;i++)
{ printf("%6d", aa[i]);
if( !(i%5) ) printf("\n");
}
printf("\n");
}
(17) 以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0; i
{ p=0;
for(j=1; j
if(x[i][p]
printf("The max value in line %d is %d\n", i, );
}
}
main()
;
}
答案:
一:选择题
(1)c (2)c (3)c (4)c (5)c (6)b (7)a (8)d
(9)d (10)c (11)c (12)c (13)a (14)b (15)c
(16)d (17)b (18)d (19)a (20)c (21)c (22)b
(23)b (24)d (25)a (26)c (27)c (28)d (29)c
(30)c (31)a (32) (33) (34) (35)b (36)b
(37)b (38)c (39)b (40)c (41)a (42)d (43)a
(44)d (45)a (46)b (47)c (48)c (49)b (50)b
二、填空题
(1)字节 (2)AUTOEXEC.BAT
(3)COPY *.TXT PTN (4)拖动
(5)图标或按钮(6)2.1 (7)6.6
(8)Malloc(11)或malloc(sizeof(char)*11)
(9)Hello (10)passwarm
(11)void(*p)()或void(*p)(int*,int*)(12)0
(13)10 (14)struct st 或ex
(15)"bi.dat","w"或"bi,dat","wt"或"bi.dat","w+t"
(16)5 (17)4 (18)p=j (19)x[i][p] (20)LineMax(x)
❸ C语言 函数renturn a 语句,但是a在main函数里没变化
你这程序写的语法有问题啊,main函数中调用Register (a)和Menu(i)都有参数,外部定义Register ()和Menu()时又没有参数,而且在外部定义Register ()和Menu()你还有一个返回值,主函数中都没有接收这个值的变量
外部调用函数的语宽拆法应该是这样的:
int pp(int a)//a是形参
{
int c;
……
return(c);
}
……
main()
{ int i,j;
…塌拆…
j= pp(i)//i是实参,j用来接收返回的c
}
还有一种是这样的:
int aaa; //定义一个全局变团巧枣量
int pp()
{
aaa=100;
}
……
main()
{ int i,j;
aaa=2;
pp();
printf("%d",aaa);//此时aaa=100
}
❹ 用C语言将文本文件中的数据(一个个结构体类型的数据)读到链表中去,代码如何写
这是我最开始学习链表的时候写的一个很小的程序,好像不是很完善,但是大致应该没有问题,你可以参照的看看。太晚了,实在是不想写了。
#include<stdio.h>
#include<io.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX200
structstudent
{
charno[10];//学号
charname[50];//姓名
floatscore[3];//分数
floatmath;
floateng;
floatphy;
};
structdata
{
intcount;//当前学生数组中学生的个数
structstudentstu[MAX];//学生数组
}dd;
//显示主菜单
voidmenu()
{
system("cls");//清屏
printf(" ");
printf(" ******************************* ");
printf(" ");
printf(" 顷庆唤学生成绩管理系统 ");
printf(" ");
printf(" [1]查看所有学生信息 ");
printf(" [2]输入学生记录 ");
printf(" [3]删除学生记录 ");
printf(" [4]修改学生记录 ");
printf(" 差搏[5]查询学生成绩(学号) ");
printf(" [6]查询成学生绩(姓名) ");
printf(" [7]查看成绩排序(学号) ");
printf(" [0]退出雀凯 ");
printf(" ");
}
//等待用户按回车后回到主菜单
voidto_menu()
{
charc1,c2;
printf(" 按回车键返回主菜单...");
scanf("%c%c",&c1,&c2);//第一个字符吸收上次的确认回车键
menu();
}
//统计信息
voidren()
{
intA=0,B=0,C=0,D=0,E=0,s;
inti;
for(i=0;i<dd.count;i++)
{
s=(int)(dd.stu[i].math/10);
switch(s)
{
case10:
case9:
A++;
break;
case8:
B++;
break;
case7:
C++;
break;
case6:
D++;
break;
default:
E++;
break;
}
}
printf("总人数:%d ",dd.count);
printf("获得“优秀”的人数:%d ",A);
printf("获得“良”的人数:%d ",B);
printf("获得“中”的人数:%d ",C);
printf("获得“及格”的人数:%d ",D);
printf("不及格的人数:%d ",E);
}
//查看所有学生信息
voidview_data()
{
inti;
printf("学号 姓名 数学 英语 物理");
printf(" ------------------------------------------------------------------- ");
for(i=0;i<dd.count;i++)
printf("%s %s %-7.1f %-7.1f %-7.1f ",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
printf(" ------------------------------------------------------------------- ");
ren();
}
//将数据从结构体数组保存到文件中
voidsave_data()
{
FILE*fp;//文件指针
inti,k;
k=dd.count; //其实k没有什么实际的意义,直接在fwrite里使用&dd.count就可以了。
fp=fopen("D:\data.txt","w");//文件存储位置:当前文件夹
fwrite(&k,sizeof(int),1,fp);
for(i=0;i<dd.count;i++)
fwrite(&dd.stu[i],sizeof(structstudent),1,fp);
fclose(fp);
}
//输入学生记录
voidadd_data()
{
intb;
intk=dd.count;
while(k<MAX)
{
printf("请输入学生学号:");scanf("%s",dd.stu[k].no);
printf("请输入学生姓名:");scanf("%s",dd.stu[k].name);
printf("请输入数学成绩:");scanf("%f",&dd.stu[k].math);
printf("请输入英语成绩:");scanf("%f",&dd.stu[k].eng);
printf("请输入物理成绩:");scanf("%f",&dd.stu[k].phy);
dd.count++; //需要提前置0,在主函数中。
k=dd.count;
printf(" 继续添加学生信息[1-yes0-no]:");
scanf("%d",&b);
if(b==0)break;
}
save_data();
}
//将数据从文件读到结构体数组中
voidread_data()
{
FILE*fp;
inti,k;
k=0;
if((fp=fopen("D:\data.txt","r"))==NULL)//如果文件不存在
{
dd.count=0;
}
else
{
fread(&k,sizeof(int),1,fp);
dd.count=k;
for(i=0;i<k;i++)
{
fread(&dd.stu[i],sizeof(structstudent),1,fp);
}
fclose(fp);
}
}
//删除学生记录
voiddelete_data()
{
inti,k;
charno[10];
printf(" 请输入要删除学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf(" 没有找到该学生(学号-%s)!",no);
}
else
{
//你没有写删除的操作啊
for(i=k;i<dd.count-1;i++) //将后面的数据前移一位
dd.stu[i]=dd.stu[i+1];
memset(&dd.stu[dd.count-1],0,sizeof(structstudent)); //将dd.stu[dd.count-1]数据置0
dd.count--;
save_data();
printf(" 删除学生(学号-%s)记录成功!",no);
}
}
//修改学生记录
voidedit_data()
{
inti,k;
charno[10],name[50];
printf(" 请输入要修改学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf(" 没有找到该学生(学号-%s)!",no);
}
else
{
printf(" 请输入学生数据:");
printf(" 姓名");
printf(" -------------------------------------------------------------------- ");
scanf("%s",name);
strcpy(dd.stu[k].name,name);
save_data();
printf(" 修改学生记录(学号-%s)成功!",no);
}
}
//查询学生成绩(学号)
voidquery_data_no()
{
inti,k;
charno[10];
printf(" 请输入要查询学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
printf(" 学号 姓名 数学 英语 物理");
printf(" ----------------------------------------------------------------- ");
k=i;
printf("%s %s %-7.1f %-7.1f %-7.1f ",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
break; // 学号应该是唯一的,找到了一个就代表以后的没有了。
}
}
if(k==-1)
{
printf(" 没有找到该学生(学号-%s)!",no);
}
}
//查询学生成绩(姓名)
voidquery_data_name()
{
inti,k;
charname[10];
printf(" 请输入要查询学生的姓名:");
scanf("%s",name);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].name,name)==0)
{
printf(" 学号 姓名 数学 英语 物理");
printf(" ----------------------------------------------------------------- ");
k=i;
printf("%s %s %-7.1f %-7.1f %-7.1f ",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
break;
}
}
if(k==-1)
{
printf(" 没有找到该学生(姓名-%s)!",name);
}
}
//排序(学号)
voidsort_data_no(structdataBuff)
{
inti;
intj;
intk;
inth;
structstudenttemp;
FILE*fp;
if((fp=fopen("D:\data.txt","w+"))==NULL)
{
printf("cannotopenfile! ");
exit(0);
}
printf("请输入要查询的科目:1-数学,2-英语,3-物理:");
scanf("%d",&k);
switch(k)
{
case1:
for(i=0;i<Buff.count-1;i++)
for(j=i+1;j<Buff.count;j++)
if(Buff.stu[i].math>Buff.stu[j].math)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次 学号 姓名 数学 ");
for(i=0;i<Buff.count;i++)
printf("%d %s %s %-7.1f ",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].math);
break;
case2:
for(i=0;i<Buff.count-1;i++)
for(j=i+1;j<Buff.count;j++)
if(Buff.stu[i].eng>Buff.stu[j].eng)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次 学号 姓名 英语 ");
for(i=0;i<Buff.count;i++)
printf("%d %s %s %-7.1f ",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].eng);
break;
case3:
for(i=0;i<Buff.count-1;i++)
for(j=i+1;j<Buff.count;j++)
if(Buff.stu[i].phy>Buff.stu[j].phy)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次 学号 姓名 物理 ");
for(i=0;i<Buff.count;i++)
printf("%d %s %s %-7.1f ",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].phy);
break;
default:
printf("输入错误!");
exit(0);
}
printf("请按任意键继续....");
getch();
fclose(fp);
}
//主函数
voidmain()
{
intfun;
dd.count=0;
read_data();
menu();
while(1)
{
printf("请输入功能号[0-7]:");//这里不需要什么&fun,
scanf("%d",&fun);
switch(fun)
{
case1:view_data();break;//查看所有学生信息
case2:add_data();break;//输入学生记录
case3:delete_data();break;//删除学生记录
case4:edit_data();break;//修改学生记录
case5:query_data_no();break;//查询学生成绩(学号)
case6:query_data_name();break;//查询成学生绩(姓名)
case7:sort_data_no(dd);break;//查看成绩排序(学号)//直接将结构体dd发送过去就可以了
case0:break;//退出
}
if(fun==0)break;
to_menu();
}
return;
}
❺ 51单片机 C语言 串口数组赋值问题
贴上来的程序部分,修改如下:
#include<reg52.h>
#include<stdio.h> //打印到串口函数雀孙
#define uchar unsigned char
#define uint unsigned int
uchar date_zi[4][11]; //存放接收到的数据
uint i_index=0; //接收到的字符个数
uint i=0; //i字符用于循环
unsigned int xia = 0; //用于保存到顷闹链数据的下标
void fh_zi(uchar a) //返弯渗回字符到串口
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
}
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0Xfd;
//TH0=(65536-45872)/256;
//TL0=(65536-45872)%256;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
void main()
{
i_index=0;
xia=2;
init();
while(1);
}
void ser() interrupt 4 //串口
{
if(RI == 1)
{
RI=0;
date_zi[xia][i_index] = SBUF;
i_index++;
if(i_index>10) //接受完10个字符后显示数组所有内容
{
i_index=0;
for(i=0;i<11;i++) //显示数组中所有内容
fh_zi(date_zi[0][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[1][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[2][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[3][i]);
}
}
}
❻ C语言定义一个函数将一个整数(做为参数)变成字符串,每个字符之间加一个空格,并将字符串输出
#include"stdio.h"
void main()
{
int a;
char ch[10]={0};
scanf("%d",&a);
int c=a,i=0;
while(c)
{
i++;
c=c/10;
}
while(a)
{
i--;
ch[i]=a%10+'0';
a/=10;
}
for(i=0;ch[i]!='\0';i++)
printf("%c ",ch[i]);
}
不知道这样可以不。
补充:
#include<stdio.h>
int aq(int c,int a)//这个函数也有很大的问题。
{
int i;
char ch[10];
c=a;i=0;
while(c)
{
i++;
c=c/10;
return c;
}
while(a)
{
i--;
ch[i]=a%10+'0';
a/=10;
return a;
}
}
main()
{
int a,i;
char ch[10]={0};
scanf("%d",&a);
for(i=0;ch[10]!='\0';i++) //这句毫无意义,或者你写错了,并且后面也缺少了大括伍键号。
ch[i]=aq(a); /圆橘哪/函数定义时有两个参数,这里橘码调用却只有一个,不错才怪了
printf("%c",ch[i]);
}
劝你还是要不重新做,要不看懂答案后再自己做,反正你写的实在问题太大
❼ C语言中怎么给一个结构体用scanf进行赋值
很简单的
在这个例子里面我建议你不用scanf改虚塌用getsgets(ren[0].gonghao)就可以了
因为差岩圆都枣薯是字符型数组么、、
❽ 用单片机C语言怎样启动内部上拉电阻寄存器REN
不同单片机有不同方法;
51不用内部上拉,因为51端口没有方向,你如果给1,就算拉起来了,但外部有低电平是,还是很容易就拉下去
avr好隐渣扰久没用,应该是把端口置为输入,数据寄存器高
PIC只有在给定灶旦的端口才可以上拉,此时OPTION_REG寄存器中有一位上拉使能的,控制这梁租位就可以了
❾ C语言编程:输入50个同学的成绩,计算平均值并输出大于平均值的学生序号和成绩,错误在哪
你好!!
程序改好了,运行的结果
#include<stdio.h>
intmain()
{
intrenshu=50.0;//这里设定人数,为了方便,我调试设的是3
inti;
doublea[100],b[100],s,t,avera,averb;//ab定义成数组
for(i=1,s=0,t=0;i<=renshu;i++)
{
scanf("%lf%lf",&a[i],&b[i]);//%lf之间加上空格
s=s+a[i];
t=t+b[i];
}
avera=s/renshu;
averb=t/renshu;
printf("科目1平均成绩为:%lf
",avera);
printf("科目1平均成绩为:%lf
",averb);
for(i=1;i<=renshu;i++)
{
if(a[i]>avera)
printf("学生%d的科目1成绩为%lf
",i,a[i]);
}
for(i=1;i<=renshu;i++)
{
if(b[i]>averb)
printf("学生%d的科目2成绩为%lf
",i,b[i]);
}
return0;
}
❿ c语言中renshu:是什么意思
这是定义耐卜一个标签,以后可以用goto语句旦亩烂跳到这个标签。
比模漏如:
int n=0;
renshu:
n++;
if(n<10)
goto renshu;