李明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++就可以