『壹』 在c語言中&s[0].name和要s[0].name有什麼區別
在c語言中&表示取地址運算符
&s[0].name表示s[0]的name成員的地址,s[0].name表示是s[0]的name成員。
根據你的描述,name成員應該屬於字元串,而C語言中規定,字元串的串名就是其首地址,所以s[0].name就是地址,&s[0].name反而就錯了。
『貳』 c語言中int n,s=0是表示n=0,s=0嗎
不是,只是定義了兩個int變數,n沒有初始化,要想n=0,s=0,可以n=s=0;
『叄』 這道c語言怎麼寫
根據題意:
要驗證學號輸入,應該有一個學生名單。
所以我定義了init函數來初始化一個學生名單,只是測試用數據,你想要手動輸入學生名單,請修改該函數。
由於實現動態刷新信息,用到getch來暫停刷新,這個函數頭文件conio在windows下有效,你要是使用的其他操作系統,可以自定義類似函數來替換,或者直接刪除所有getch()和system("cls")語句。
命令符的輸入驗證按照題目要求。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
#define STUN 5//學生最大人數
#define CN 100//輸入命令符號字元串最大個數
typedef struct stu//學生個人信息,如想添加比如班級、年級等,自行添加
{
char id[20];//學號
char name[10];//姓名
float score;//成績
}STU;
STU *init();//初始化一組學生信息
void showStus(STU *stus);//列印學生信息
void cmdA(STU *);//錄入學生成績,判斷等級
void cmdH();
void cmdQ();
int cmdGet();//識別命令A、H、Q分別返回1、2、3。輸入無效命令時返回0
int main()
{
int n=0;
STU *stus=NULL;
system("cls");
stus=init();
while(!n)
{
printf("[StuSc3] ");
n=cmdGet();
if(!n)
{
printf("命令必須以A、H、Q開頭,不區分大小寫,忽略空格和tab字元 ");
printf("按任意鍵返重新輸入命令符。。。 ");
getch();
}
switch(n)
{
case 1:showStus(stus);cmdA(stus);break;
case 2:cmdH();break;
case 3:cmdQ();return 0;
}
n=0;
system("cls");
}
return 0;
}
STU *init()
{
int i;
char nstr[25];
static STU stus[STUN];
for(i=0;i<STUN;i++)
{
strcpy(stus[i].id,"S00");
itoa(i+1,nstr,10);
strcat(stus[i].id,nstr);
strcpy(stus[i].name,"學生");
strcat(stus[i].name,nstr);
stus[i].score=0;
}
return stus;
}
void showStus(STU *stus)//列印學生信息
{
int i;
printf("當前學生信息: ");
for(i=0;i<STUN;i++){
printf("學號:%s 姓名:%s 成績:%.1f ",stus[i].id,stus[i].name,stus[i].score);
printf("%s%s%s ",stus[i].score>=85?"優秀":"",stus[i].score<85 && stus[i].score>=60?"合格":"",stus[i].score<60?"不合格":"");
}
printf(" ");
}
void cmdA(STU *stus)
{
STU *stuSave=NULL;
int i,flag;
char id[20];//學號
float score;//成績
while(1)
{
printf("請輸入學號及成績:(輸入END結束輸入) ");
scanf("%s",id);
if(strcmp(id,"END")==0)
break;
flag=0;
stuSave=NULL;
for(i=0;i<STUN;i++)
if(strcmp(stus[i].id,id)==0)
{
flag=1;
stuSave=&stus[i];
break;
}
if(!flag)
{
printf("該學生不存在! 任意鍵重新輸入。。。 ");
getch();
continue;
}
scanf("%f",&score);
if(score<0){
printf("成績不能為負數! 任意鍵重新輸入。。。 ");
getch();
continue;
}
stuSave->score=score;
system("cls");
showStus(stus);
}
}
void cmdH()
{
printf("使用幫助: ");
printf("輸入命令符A、H、Q,不區分大小寫,忽略開頭的空格及tab字元,忽略之後所有字元 ");
printf("命令A:錄入學生成績,判斷成績等級 ");
printf("命令H:幫助文檔 ");
printf("命令Q:退出程序 ");
printf("按任意鍵返回命令符輸入。。。 ");
getch();
}
void cmdQ()
{
printf("再見! ");
printf("按任意鍵結束程序。。。 ");
getch();
}
int cmdGet()
{
char inStr[CN],*p=inStr;
printf("ST3> ");
scanf("%s",inStr);
while(*p!=0)
{
if(*p=='A' || *p=='a')
return 1;
if(*p=='H' || *p=='h')
return 2;
if(*p=='Q' || *p=='q')
return 3;
if(*p!=' ' && *p!=' ')//跳過空格和tab
{
printf("無效命令 ");
return 0;
}
p++;
}
return 0;
}
『肆』 在c語言中s[0]-'0是什麼意思
s[0]是char型,一般用 s[0]-'0'表示整型,如果你想要s[0]的ASCII碼值,你可以使用s[0]-'0',減『0』,是因為字元『0』對應的ASCII碼值是0,這樣相減的結果直接就是s[0]字元的ASCII碼值。