C语言程序设计是什么

C语言程序设计是什么,第1张

什么是C语言?C语言的简介。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。

语言特点:C是中级语言/C是结构式语言/C语言功能齐全/C语言适用范围大/简洁紧凑、灵活方便/运算符丰富/数据类型丰富/C是结构式语言/语法限制不太严格,程序设计自由度大/适用范围大,可移植性好。

1、C程序的执行特点是 (c)

A、从程序的main函数开始,到程序的最后一个函数结束

B、从程序的第一个函数开始,到程序的最后一个函数结束

C、从程序的main函数开始,到程序的main函数结束

D、从程序的第一个函数开始,到程序的main函数结束

2、字符型(char)数据在微机内存中的存储形式是 (b)

A、BCD码 B、ASCH码 C、补码 D、反码

3、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m==a>b)&&(n==c>d)后n的值为(d)

A、2 B、3 C、1 D、0

4、设有定义;float a=2,b=4,h=3;

以下语言表达式中与代数式1/2(a+b)h计算结果相符的是 (d)

A、(a+b)h/2 B、(1/2)(a+b)h

C、(a+b)h1/2 D、h/2(a+b)

5、在以下一组运算符中,优先级最高的运算符是

(d)

A、&& B、= C、<= D、%

6、设有以下定义// 这题目 貌似错的

int a=0;

double b=125;

char c=’A’;

#define D 2

则下面语句中错误 的是 ()

A、a++ B、b++ C、c++ D、d++

7、设int m=1,n=2,m++==n表达式的结果是

(b)

A、0 B、1 C、2 D、3

8、设有如下定义:int x=10,y=3,z;则语句

printf(“%d/n”,z=(x%y,x/y));的输出结果是 (a)

A、3 B、1 C、0 D、4

9、假定所有变量均已正确说明,下列程序段运行后X的值是 (b)

int a,b,c,x;

a=b=c=0;

if(b)

x=3

else

x=4;

A、35 B、4 C、34 D、3

10、设变量c为char类型,能正确判断出c为小写字母的表达式是(c)

A、‘a’<=c<=’z’ B、(c>=’a’)||(c<=’z’)

C、(c<=’a’)&&(c<=’z’) D、以上都不是

11、为了避免在嵌套的条件语句(if-else)中产生二义性,C语言规定:else子句总是

与 (b) 配对。

A、缩排位置相同的if B、其之前最近的if

C、其之后最近的if D、同一行上的if

12、循环语句while和do-while的主要区别是(a)

A、do-while循环体至少要无条件执行一次,while循环可以一次都不执行

B、while的循环控制条件比do-while的循环控制条件更严格

C、do-while允许从外部跳转到循环体内

D、do-while的循环体不能是复合语句

13、当执行以下程序段时

x=-1;

do{x=xx;} while(!x); (a)

A、循环体将执行一次 B、循环体将执行两次

C、循环体将执行无限次 D、系统将提示有语法错误

14、设有定义:int a{10};以下对a数组元素正确引用的是(d)

A、a[10] B、a[3,5] C、a (5) D、a[10-10]

15、若用数组名作为函数的实参,传递给形参的是

(a)

A、数组的首地址 B、数组第一个元素的值

C、数组中全部元素的值 D、数组元素的个数

16、C语言允许函数类型缺省定义,此时函数值隐含的类型是 (b) A、float B、int C、long D、double

C语言的基础语法包括数据类型、运算符、表达式、数组、逻辑运算、函数、指针等。学习这些先买一本入门书籍,个人还是推荐经典的《C语言》,既然挺多大学选择这本书作为教材,总归有其合理之处吧。这本书对知识点的介绍都比较浅显,但涵盖面比较广。边学语法便敲案例,看着代码在计算机上运行起来是不是也有点小激动。这样便有了继续学习下去的动力。

C语言深入的话推荐《c primer plus》,你会发现有些地方晦涩难懂,不要被疑问绊住脚步,浪费太多时间在细枝末节的地方。C语言只是你进入新世界的第一步而已,而编程的世界远比你想象的更广阔,更有意思。《c primer plus》更适合作为一本字典使用,放在电脑旁,方便随时查阅。

第一题:

#include<stdioh>

int main()

{

 float a,b,c,min;

 scanf("%f %f %f",&a,&b,&c);

 min=a;

 if(b<min) min=b;

 if(c<min) min=c;

 printf("%f",min);

 return 0;

}

第二题:

#include<stdioh>

int main()

{

 int a,b;

 scanf("%d %d",&a,&b);

 int c=(aa)+(bb);

 printf("%d",c);

 return 0;

}

第三题:

#include<stdioh>

#include<mathh>

#include<iostream>

using namespace std;

int main()

{

 float a,b,c;

 cin>>a>>b>>c;

 float area;

 float s;

 s=(a+b+c)/2;

 area=sqrt(s(s-a)(s-b)(s-c));  

 cout<<area;

}

第四题:

#include<iostream>

using namespace std;

int main()

{

 int a[2];

 for(int i=0;i<2;i++) cin>>a[i];

 int b[2];

 b[1]=a[0];

 b[0]=a[1];

 for(int i=0;i<2;i++) cout<<b[i]<<" ";

 return 0;

}

第五题:

#include<stdioh>

int main()

{

 float F,C;

 scanf("%f",&F);

 C=5(F-32)/9;

 printf("C=%02f\n",C);

 return 0;

}

最终结果——m=3

switch (a%3) → a为16,a%3为1 → 执行 case 1 → m初值为0,m++为1。注意,这里case1 并没有break,所以会继续向下执行完整个switch (a%3) → 执行switch (b%2) → b为21,b%2为1 → 执行default → m为1,m++为2 → 注意这里依然会继续执行case0 → m++为3,break跳出switch (b%2) → switch (a%3)语句结束 → 执行printf,此时m为3。

#include<stdioh>

void main() {

int a=16,b=21,m=0;

switch(a%3) {

case 0:m++; break;

case 1:m++;

switch(b%2) {

default: m++;

case 0:m++;break;

}

}

printf("m=%d\n",m);

}

运行结果

这种东西很多了,随便搜索一大堆:这是个学生成绩的!

#include <iostreamh>

#include <iomaniph>

#include <fstream>

#include <vector>

#include <malloch>

#include <stdlibh>

#include <string>

#include <processh>

#include <stdioh>

//#define NULL 0

int const Q=20;

#define LEN sizeof(struct student)

using namespace std;

int n=0; //定义一个全局变量统计学生人数

//——--------->定义一个学生考试信息的结构体

struct student

{

char name[Q]; //用来存放姓名的

char sex[Q]; //用来存放性别的

long int id; //用来存放准考证号的

int score[4]; //用来存放分数的

int total; //用来存放总分数的

struct student next;

};

//student向量容器

vector <student> stu;

//-------------->学生类

class Information

{

public:

Information() ; //构造函数

~Information() ; //析构函数

student creat();//建立链表函数。

void output(student head);

int count(student head);//定义函数count()统计考生总数

student insert(studenthead);//指针函数insert()用来添加考生信息

student cancel(student head,long int num);//指针函数cancel()用来删除考生信息

student find(student head,long int num); //指针函数find()用来查找考生信息

void inorder(student head);//定义inorder()函数将考生的总分从大到小排列并输出

void average( student head);//求学生成绩的平均分的函数

void save(student head);//保存函数

student Read();//读取函数

private:

student p1,p2,p3,head,st;

};

Information::Information()

{

cout<<" \n";

cout<<" ------------------------<<欢迎您使用学生成绩管理系统>>------------------------\n";

cout<<" \n\n";

}

Information::~Information()

{

cout<<" \n";

cout<<" ------------------------<<谢谢您使用学生成绩管理系统>>------------------------\n";

cout<<" \n";

}

student Information::creat(void)

{//定义一个指向struct student的结构体指针函数creat()用来增加考生信息

char ch[Q];n=0; //用来存放姓名的

p1=p2=(student )malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元

cout<<" -------------<<请建立学生考试信息表,在姓名处键以 ! 结束输入。>>--------------"<<endl;

cout<<" 姓名:";

cin>>ch;

head=NULL; //给指针head赋初值

while (strcmp(ch,"!")!=0)

{//调用字符比较函数strcmp()用来判断是否继续输入

char str[10];

int flag=0;

p1=(student )malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元

strcpy(p1->name,ch); //将循环结构前面输入的姓名复制到结构体名为p1的数组name中

cout<<" 性别:";

cin>>p1->sex;

cout<<" 准考证号(8位):";

do{

cin>>str;

if(atol(str)>99999999 || atol(str)<1)

cout<<"对不起,请正确输入!!!\n";

else

{

p1->id=atol(str); flag=1;

}

}while(flag==0);

flag=0;

cout<<" 计算机组成原理成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{

p1->score[0]=atoi(str); flag=1;

}

}while(flag==0);

flag=0;

cout<<" 概率统计成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{ p1->score[1]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout<<" 英语成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{ p1->score[2]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout<<" C++成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{ p1->score[3]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

p1->total=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];//计算总分

if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针head

else p2->next=p1;//否则将p1赋给p2所指结构体的next指针

p2=p1;//将指针p1赋给指针p2

n++; //将n的值加1

cout<<" 姓名:";

cin>>ch;//将输入的姓名存放到字符数组ch中

}

p2->next=NULL;//将p2所指结构体的next指针重新赋空值

return (head);//将输入的第一组学生考试信息返回

}

//--------------->定义output()函数将考生的信息从头指针所指内容开始输出

void Information::output(student head)

{

if(head==NULL) cout<<" 这是一个空表,请先输入考生成绩\n";

else{

cout<<"-------------------------------------------------------------------------------\n";

cout<<" 学生考试成绩信息表\n";

cout<<"-------------------------------------------------------------------------------\n";

cout<<"准考证号 姓 名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分\n";

cout<<"-------------------------------------------------------------------------------\n";

p1=head;//将头指针赋给p

do

{

cout<<setw(8)<<p1->id

<<setw(9)<<p1->name

<<setw(8)<<p1->sex

<<setw(13)<<p1->score[0]

<<setw(16)<<p1->score[1]

<<setw(10)<<p1->score[2]

<<setw(9)<<p1->score[3]

<<setw(6)<<p1->total/40

<<setw(11)<<p1->total<<endl;

cout<<"-------------------------------------------------------------------------------\n";

p1=p1->next;//将下一组考生信息的next指针赋给p

}while(p1!=NULL);//若指针p非空则继续,目的是把所有的考生信息都传给指针p然后输出

}

}

//------------>统计学生人数的函数

int Information::count(struct student head)//定义函数count()统计考生总数

{

if(head==NULL)

return(0);//若指针head为空返回值为0

else return(1+count(head->next));//函数的递归调用

}

//----------->插入学生的成绩的函数

student Information::insert( student head)

//插入新结点定义一个指向struct student的结构体指针函数insert()用来添加考生信息

{

char str[10];

int flag=0;

cout<<"\t----------------<<请输入新增学生成绩信息>>----------------\n"<<endl;

p1=(student )malloc(LEN); //使p1指向插入的新结点

cout<<" 姓名:";

cin>>p1->name; //将输入的姓名存放到结构体名为p1的数组name中

cout<<" 性别:";

cin>>p1->sex;

cout<<" 准考证号(8位):";

do{

cin>>str;

if(atol(str)>99999999 || atol(str)<1)

cout<<"对不起,请请正确输入!!!\n";

else

{p1->id=atol(str); flag=1; }

}while(flag==0);

flag=0;

cout<<" 计算机组成原理成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{ p1->score[0]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout<<" 概率统计成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{ p1->score[1]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout<<" 英语成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{ p1->score[2]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout<<" C++成绩:";

do{

cin>>str;

if(atoi(str)>100 || atoi(str)<1)

cout<<"对不起,请输入1-100之间的数字!!\n";

else

{ p1->score[3]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

p1->total=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];//计算总分

p2=head;//将头指针赋给p2

if(head==NULL) //若没调用次函数以前的头指针head为空

{

head=p1;p1->next=NULL;

}//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值

else

{

while((p1->id>p2->id)&&(p2->next!=NULL))

{

p3=p2;//p3指向原p2指向的结点

p2=p2->next;

}//p2后移一个结点

if(p1->id<=p2->id)

{

if(head==p2)

{

p1->next=head;

head=p1;

} //插入到第一个结点之前

else

{

p3->next=p1;

p1->next=p2;

} //插入到p3所指结点之后

}

else

{

p2->next=p1;

p1->next=NULL;

} //插入到尾结点之后

}

n++;//将学生人数加1

cout<<"\t你输入的学生信息已经成功插入"<<endl;

return (head);

}

//------------>删除函数

student Information::cancel(student head,long int num)//定义一个指向struct student的结构体指针函数delete()用来删除考生信息

{

if(head==NULL)//若调用次函数以前的头指针head为空

{

return(head);

}

else

{

p1=head;//否则将头指针赋给p1

while(num!=p1->id&&p1->next!=NULL)//寻找要删除的结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空

{

p2=p1;

p1=p1->next;

}//p2指向原p1指向的结点p1后移一个结点

if(num==p1->id)//如果输入的学生准考证号是p1所指的学生准考证号//结点找到后删除

{

if(p1==head) head=p1->next;//如果head指针和p1指针相等则将下一个结点赋给指针head

else

p2->next=p1->next;//否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去

cout<<" 删除准考证号为"<<num<<"的学生\n";

n--;//将学生人数减1

}

return(head);//将头指针返回

}

}

//------------>查找函数

student Information::find(student head,long int num)

//定义一个指向struct student的结构体指针函数find()用来查找考生信息

{

if(head==NULL)//若调用次函数以前的头指针head为空

{

cout<<" 这是一个空表,请先输入考生成绩\n";

return(head);

}

else

{

p1=head;//否则将头指针赋给p1

while(num!=p1->id&&p1->next!=NULL)

//寻找结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空

{

p1=p1->next;

}//p2指向原p1指向的结点p1后移一个结点

if(num==p1->id)//如果要查找的学生准考证号是p1所指的学生准考证号

{

cout<<"------------------------------------------------------------------------------\n";

cout<<"准考证号 姓名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分 \n";

cout<<"------------------------------------------------------------------------------\n";

cout<<setw(8)<<p1->id

<<setw(9)<<p1->name

<<setw(8)<<p1->sex

<<setw(13)<<p1->score[0]

<<setw(16)<<p1->score[1]

<<setw(10)<<p1->score[2]

<<setw(9)<<p1->score[3]

<<setw(6)<<p1->total/40

<<setw(11)<<p1->total<<endl;

cout<<"------------------------------------------------------------------------------\n";

}

else

cout<<" 没找到准考证号为"<<num<<"的学生\n"; //结点没找到

return(head);

}

}

//------------定义inorder()函数将考生的总分从大到小排列并输出

void Information::inorder(student head)

{

int i,k,m=0,j;

student p[Q];//定义一个指向struct student的结构体指针数组p

if(head!=NULL)//如果头指针是空则继续

{ m=count(head);

cout<<"------------------------------------------------------------------------------\n";

cout<<"学生考试成绩统计表\n";

cout<<"------------------------------------------------------------------------------\n";

cout<<"准考证号 姓 名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分 名次\n";

cout<<"------------------------------------------------------------------------------\n";

p1=head;

for(k=0;k<m;k++)

{

p[k]=p1;

p1=p1->next;

}

for(k=0;k<m-1;k++) //选择排序法

for(j=k+1;j<m;j++)

if(p[k]->total<p[j]->total)

{

p2=p[k];

p[k]=p[j];

p[j]=p2;

} //从大到小排列的指针

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

{

cout<<setw(8)<<p1->id

<<setw(9)<<p1->name

<<setw(8)<<p1->sex

<<setw(13)<<p1->score[0]

<<setw(16)<<p1->score[1]

<<setw(10)<<p1->score[2]

<<setw(9)<<p1->score[3]

<<setw(6)<<p1->total/40

<<setw(11)<<p1->total<<endl;

cout<<"------------------------------------------------------------------------------\n";

}

}

}

//------------>求各科平均分成绩的函数

void Information::average(student head)

{

int k,m;

float arg1=0,arg2=0,arg3=0,arg4=0;

if(head==NULL)//如果头指针是空则继续

{

cout<<" 这是一个空表,请先输入考生成绩\n";

}

else

{

m=count(head);

p1=head;

for(k=0;k<m;k++)

{

arg1+=p1->score[0];

arg2+=p1->score[1];

arg3+=p1->score[2];

arg4+=p1->score[3];

p1=p1->next;

}

arg1/=m;arg2/=m;arg3/=m;arg4/=m;

cout<<"全班单科成绩平均分\n";

cout<<"------------------------------------------------------------------------------\n";

cout<<" 计算机组成原理平均分:"<<setw(7)<<arg1

<<" 概率统计平均分:"<<setw(7)<<arg2

<<" 英语平均分:"<<setw(7)<<arg3

<<" C++平均分:"<<setw(7)<<arg4<<endl;

cout<<"------------------------------------------------------------------------------\n";

}

}

//------------------->保存函数

void Information::save(student head)

{

ofstream out("datatxt",ios::out);

out<<count(head)<<endl;

while(head!=NULL)

{ out<<head->name<<"\t"

<<head->id<<"\t"<<"\t"

<<head->sex<<"\t"

<<head->score[0]<<"\t"

<<head->score[1]<<"\t"

<<head->score[2]<<"\t"

<<head->score[3]<<"\t"

<<head->total<<endl;

head=head->next;

}

}

//———————————>读取函数的实现

student Information::Read()

{ int i=0;

p1=p2=( student )malloc(LEN);

head=NULL;

ifstream in("datatxt",ios::out);

in>>i;

if(i==0){cout<<" datatxt 文件中的数据为空,请先输入数据。"<<endl; return 0;}

else {

cout<<" …………………………………………………………………………………………"<<endl;

for(;i>0;i--)

{ p1=(student )malloc(LEN);

cin>>stname>>stid>>stsex

>>stscore[0]>>stscore[1]>>stscore[2]>>stscore[3]

>>sttotal;

strcpy(p1->name,stname);

p1->id=stid;

strcpy(p1->sex,stsex);

p1->score[0]=stscore[0];

p1->score[1]=stscore[1];

p1->score[2]=stscore[2];

p1->score[3]=stscore[3];

p1->total=sttotal;

if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针head

else p2->next=p1;//否则将p1赋给p2所指结构体的next指针

p2=p1;//将指针p1赋给指针p2

n++; //将n的值加1

//显示读入数据

cout<<" "<<p1->name<<"\t"

<<p1->id<<"\t"<<"\t"

<<p1->sex<<"\t"

<<p1->score[0]<<"\t"

<<p1->score[1]<<"\t"

<<p1->score[2]<<"\t"

<<p1->score[3]<<"\t"

<<p1->total<<endl;

cout<<" …………………………………………………………………………………………"<<endl;

//

}

cout<<" 数据已经成功读取完毕。"<<endl;

p2->next=NULL;

return (head);

}

}

//------------------------------>主函数

int main(void)

{

Information person;

student head=NULL;

char str[10];

int flag=0;

int choice;

long int i;

head=personRead();

do{

cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";

cout<<"┃ 学生成绩管理系统主菜单界面 ┃";

cout<<"┃ 读取数据请输入数字零 ┃";

cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";

cout<<"┃ ①输入学生成绩 ┃";

cout<<"┃ ②显示学生成绩 ┃";

cout<<"┃ ③排序统计成绩 ┃";

cout<<"┃ ④查找学生成绩 ┃";

cout<<"┃ ⑤增加学生成绩 ┃";

cout<<"┃ ⑥删除学生成绩 ┃";

cout<<"┃ ⑦保存退出系统 ┃";

cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";

cout<<"请输入您的选择(1--7):( )\b\b";

cin>>str;

if(atoi(str)>7 || atoi(str)<1)

cout<<"对不起,请输入1-7这几个数字!!\n";

else

{

choice=atoi(str);

switch(choice)

{

case 1:

head=personcreat();

break;

case 2:

personoutput(head);

break;

case 3:

personinorder(head);

personaverage(head);

cout<<" 参加考试的学生人数为:"<<personcount(head)<<"人\n";

break;

case 4:

cout<<" 请输入要查找的准考证号(8位):";

do{

cin>>str;

if(atol(str)>99999999 || atol(str)<1)

cout<<"对不起,请输入正确输入!!!\n";

else

{i=atol(str); flag=1; }

}while(flag==0);

flag=0;

personfind(head,i);

break;

case 5:

head=personinsert(head);

personoutput(head);

break;

case 6:

cout<<" 请输入要删除的准考证号(8位):";

do{

cin>>str;

if(atol(str)>99999999 || atol(str)<1)

cout<<"对不起,请输入正确输入!!!h\n";

else

{i=atol(str); flag=1; }

}while(flag==0);

flag=0;

head=personcancel(head,i);

personoutput(head);

break;

case 7:

personsave(head);

cout<<"文件已保存!可以安全退出!!!"<<endl;

break;

default :cout<<" 对不起,您的输入有误,请重新输入。\n";

break;

}

}

}while(choice!=7);

return 0;

}

以上就是关于C语言程序设计是什么全部的内容,包括:C语言程序设计是什么、C语言程序设计、如何学习c语言程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9308217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存