李明c语言
1. 用c语言编写一个随机点名程序
例:
#include<stdio.h>/*standardinput&output*/
#include<stdlib.h>/*standardlibary*/
#include<string.h>/*string*/
#include<conio.h>/*ConsoleInput/Output*/
#include<time.h>
structstudentinfo/*学生信息的结构体*/
{
charsNo[5];/*学生编号*/
charsxueNo[14];/*学号*/
charsname[20];/*学生的姓名*/
}st[100];
charhash[100]={0};/*链表的数组*/
intmain()
{
inti=0,j=0,flag=0,RN,*a;
FILE*fp;
charch,filename[20]={0},line[100]={0};
printf("Pleaseinputfilename:");
//fflush(stdin);/*用来清空输入缓存,以便不影响后面输入的东西*/
gets(filename);/*键盘输入文件名*/
fp=fopen(filename,"r");/*openreadonly*/
printf("名单如下:\n");/*显示所有的学生信息*/
while(fgets(line,sizeof(line)-1,fp))
{
if(line[0]!='\n'&&line[0]!='')
{
sscanf(line,"%s%s%s\n",st[i].sNo,st[i].sxueNo,st[i].sname);/*文件输入*/
printf("%s\n%s\n%s\n",st[i].sNo,st[i].sxueNo,st[i].sname);/*打印出来*/
i++;/*统计人数*/
}
}
/*设置随机数种子*/
srand((unsigned)time(NULL));
/*sizeof(类型符)是计算类型所占字节数,sizeof(int)是int所占字节数,再乘以i,得到i个int型数据的总字节数。malloc函数用于动态开辟一块内存空间,参数为开辟的内存空间字节数,返回开辟的内存空间的首地址指针。*/
a=(int*)malloc(sizeof(int)*i);
memset(a,-1,sizeof(a));/*将已开辟内存空间a的第4个字节设置为-1*/
printf("按空格键点名,其他键退出:");
fflush(stdin);
while((ch=getch())=='')
/*while(!(ch=getch())==NULL)*/
{
if(flag==i)/*如果flag等于总人数*/
{
printf("%s\n","点名结束");
break;
}
RN=rand()%i;/*产生一个随机数*/
while(hash[RN]==1)/*判断有没有完成某个一个学生点名*/
RN=rand()%i;/*产生随机数*/
flag++;/*计数*/
printf("\n~~~~~\n%s\n%s\n%s\n------------\n",st[RN].sNo,st[RN].sxueNo,st[RN].sname);/*输出学生的信息*/
hash[RN]=1;
}
}
(1)李明c语言扩展阅读:
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果我们要打印的数的位数如果超过我们设定m则原样输出;
如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
2. c语言如何用getchar分别输入两个字符
在a=getchar();后面加一个getchar();吸收多余的回车
#include<stdio.h>
void main()
{
char a,b;
printf("大家好,我叫李明!\n");
printf("我姓名的第一个字符是:");
a=getchar();getchar();
printf("");
printf("我姓名的第二个字符是:");
b=getchar();getchar();
printf("\n你输入的两个字符分别是:");
putchar(a);
printf("、");
putchar(b);
}
这样就好了
望采纳,谢谢
3. 为什么C语言中把一个数组传入函数中,在函数调用的时候只写数组名
例子int
num[3]
=
{10,
20,
30}
在内存是这样存储的
num
0000000a,00000014,0000001e
//16进制形式
你给起始地址函数,那函数就指向了num的地址,int规定了他是16位的,所以引用的时候,就可以按顺序引用了。
传入函数大多都有一个范围值,以确定作用数组多少元素,以上例子数3。
4. 急!解答几个c语言作业,务必按题目要求。在线等。
#include<stdio.h>
voidmain()
{
structstudent
{
intnum;
charname[20];
charsex[4];
intage;
intgaoshu;
intjisuanji;
intwuli;
intyingyu;
intzongfen;
intpingjunfen;
};
structstudentstu={203212022,"李明","f",21,87,96,92,85,stu.gaoshu+stu.jisuanji+stu.wuli+stu.yingyu,stu.zongfen/4};
printf("学号:%d 姓名:%s 性别:%s 年龄:%d 高数成绩:%d 计算机成绩:%d 物理成绩:%d %英语成绩:%d 总分:%d 平均分:%d ",stu.num,stu.name,stu.sex,stu.age,stu.gaoshu,stu.jisuanji,stu.wuli,stu.yingyu,stu.zongfen,stu.pingjunfen);
}
5. c语言输出%02和%2.0f都是什么意思啊,还有100310121,李明,M,1991/05/19,72,83,90,82~为了得到这些内容
%10ld指的是以双精度输出数据其占十个单位,%8s指的是以字符串型输出数据且占8个单位,%3c指的是以字符型输出数据且前两位是空格,%6d指的是以整形数输出数据且占6个单位,%02d指的是以整形数输出数据湛亮个单位但是多余的空格补在数据后。
说实话你这问题我没太看懂
6. 求c语言编程:结构体
struct stu{
int num;
char name[10];
char sex;
int age;
int score[3];
int sum;
double ave;
}STU[10]={{203212022,'李明','f',21,87,96,92,85}};
7. C++初学者关于的语法细节疑问:拷贝构造函数与C#的clone对比,按引用调用与C的引用对比。
第一条已经有网友答了
关于引用这个
引用的符号是&,但是&在一些场合表示的是引用,一些场合表示的是取地址的意思,
在C/C++都是这样的。
那么什么时候表示引用呢,引用就是对一个对象的引用,说白一点就是给一个已存在的
对象起了个别名,比如
int a = 3;
int& b = a;
这个时候b和a是等价的,完全一模一样的,只是叫了个不同的名字,就想有个人
叫李明,他小名叫小明,小明和李明都是同一个人。
表示取地址的意思就是字面上的意思,取一个对象的地址了
比如
int a = 3;
&a就是取a这个变量的地址,
int* b;
b = &a;
这里就定义了一个int指针,然后让它指向a的地址。
两个场景的用法差别是很大的。
引用必须在声明时就指定引用的对象,比如 这样的声明就是错误的 int& b;
取地址就是得到指定对象的地址,一般就是把它赋值给一个指针对象,让指针和对象关联。
朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。
8. 用c语言建立txt文件并写入和读出三个学生的姓名性别年龄家庭住址🙏🙏
#include<stdio.h>
#include<string.h>
#define N 3
struct MSTU { char name[20],addr[80]; int age,sex; };
void main()
{ MSTU mstudent[N];
int i,n;
FILE *fp;
char buffer[256],s[2][3]={ "女","男" },sex[20];
strcpy(mstudent[0].name,"李明"); mstudent[0].age=14; mstudent[0].sex=1;
strcpy(mstudent[0].addr,"北京xx区xx路xx号01");
strcpy(mstudent[1].name,"赵飞翔"); mstudent[1].age=13; mstudent[1].sex=1;
strcpy(mstudent[1].addr,"北京xx区xx路xx号02");
strcpy(mstudent[2].name,"王晓红"); mstudent[2].age=14; mstudent[2].sex=0;
strcpy(mstudent[2].addr,"北京xx区xx路xx号03");
if ( fp=fopen("student.txt","w+") )
{ for ( i=0;i<N;i++ )
{ sprintf(buffer,"%s %s %d %s ",mstudent[i].name,s[mstudent[i].sex],
mstudent[i].age,mstudent[i].addr);
fputs(buffer,fp);
}
fclose(fp);
} else printf("无法建立输出文件。 ");
if ( fp=fopen("student.txt","r") )
{ i=0;
while ( !feof(fp) && i<N && fgets(buffer,255,fp) )
{ sscanf(buffer,"%s %s %d %s",mstudent[i].name,sex,&mstudent[i].age,
mstudent[i].addr);
mstudent[i].sex=( strcmp(sex,"女")==0 )?(0):(1);
printf("%s %s %d %s ",mstudent[i].name,s[mstudent[i].sex],
mstudent[i].age,mstudent[i].addr);
i++;
}
fclose(fp);
} else printf("无法打开文件读入数据。
");
}
9. 新概念c语言 李明 用的是什么软件编程的
使用Microsoft visual C++就可以