文档库 最新最全的文档下载
当前位置:文档库 › C语言基础12个上机题

C语言基础12个上机题

C语言基础12个上机题
C语言基础12个上机题

题目1:

/*题目1:(鸡兔同笼)一个笼子里关了鸡和兔子(鸡2只脚,兔子4只脚)。已经知道笼子里脚的总数a,问

笼子中至少有多少只动物,至多有多少只动物?*/

#include

int main()

{

printf("Please enter the num of feet:");

int sum;

scanf("%d",&sum);

printf("the maxnum of animal is %d\n",sum/2);

if(sum%4==0)

printf("the minnum of animal is %d\n",sum/4);

else printf("the minnum of animal is %d\n",sum/4+1);

return 0;

}

题目2:

/*题目2:(装箱问题)某工厂生产的产品形状都是长方体,高度均为h,长和宽都相同,一共有6种型号,长宽

分别为1*1、2*2、3*3、4*4、5*5、6*6。这些产品使用一个6*6*h的长方体包装。现在要求输入6个

整数分别代表不同型号产品的数量,求最少需要几个包装箱。*/

#include

int main()

{

int a,b,c,d,e,f,sum1,sum2,sum,fminy,fmaxy,eminy,emaxy;

printf("Please enter the num of each box from 1*1 to 6*6:\n");

scanf("%d",&f);

scanf("%d",&e);

scanf("%d",&d);

scanf("%d",&c);

scanf("%d",&b);

scanf("%d",&a);

sum1=sum2=a+b+c+d/4;//a以及d/4皆可满足自给填满

if(f>(36-25)*b)

if(4*e+f>(36-25)*b+(36-16)*c)

if(4*e+f>(36-25)*b+(36-16)*c+(36-9)*(d%4))

{

fminy=f-11*b-20*c-27*(d%4);//由线性,选出e,f的极限余值,分别求sum,取最小

fmaxy=f-11*b-15*d;

eminy=e-5*c-3*d;

emaxy=e;

if((fminy+4*emaxy)%36==0)

sum1+=(fminy+4*emaxy)/36;

else sum1+=(fminy+4*emaxy)/36+1;

if((fmaxy+4*eminy)%36==0)

sum2+=(fmaxy+4*eminy)/36;

else sum2+=(fmaxy+4*eminy)/36+1;

}

sum=sum1>sum2?sum2:sum1;

printf("The least necessary num of box:%d\n",sum);

return 0;

}

题目3:

/* 题目3:请写一个程序,对于一个m行m列(2

元素之和,最后按照从大到小的顺序依次输出。*/

#include

#define m 4//自定义数组类型大小m(2

int main()

{

int tt=0,dd=0,sum1=0,sum2=0,sum3=0,sum4=0;

int a[m][m];

printf("%d*%d数组\n",m,m);

while(tt

{

printf("请逐个输入第%d行的数据:",tt+1);

while(dd

{

scanf("%d",&a[tt][dd]);

dd++;

}

dd=0;

tt++;

}

tt=0;

printf("\n");

while(tt

{

while(dd

{

sum1+=a[tt][dd];

sum2+=a[dd][tt];

dd++;

}

printf("第%d行数据和为:%d ",tt+1,sum1);

printf("第%d列数据和为:%d\n",tt+1,sum2);

dd=0;

tt++;

sum1=sum2=0;

}

tt=0;

dd=0;

printf("\n");

while(tt

{

sum3+=a[tt][tt];

tt++;

}

printf("主对角线数据和为:%d\n",sum3);

while(dd

{

sum4+=a[dd][m-1-dd];

dd++;

}

printf("副对角线数据和为:%d\n",sum4);

int i,j,cc;

for(cc=0;cc

for(i=0;i

for(j=0;j

{

if(j!=m-1)

{

if(a[i][j]

{

int temp;

temp=a[i][j];

a[i][j]=a[i][j+1];

a[i][j+1]=temp;

}

}

else if(i!=m-1&&j==m-1)//异行

{

if(a[i][j]

{

int temp;

temp=a[i][j];

a[i][j]=a[i+1][0];

a[i+1][0]=temp;

}

}

}

printf("数组元素又大到小排列:\n");

for(i=0;i

for(j=0;j

printf("%d ",a[i][j]);

printf("\n");

return 0;

}

题目4:

/* 题目4:(简单密码)Julius Caesar曾经使用过的一种简单的密码。对于明文中的每个字符用它在

字母表中后位对应的字符来代替,这样就得到了密文。例如字符'A'用'F'。下面是密文

和明文中字符的对应关系。

----------------------------------------------------------

| 密文| A | B | C | D | E | F | G | H | I | J | K | L | M |

----------------------------------------------------------

| 明文| V | W | X | Y | Z | A | B | C | D | E | F | G | H |

----------------------------------------------------------

| 密文| N | O | P | Q | R | S | T | U | V | W | X | Y | Z |

----------------------------------------------------------

| 明文| I | J | K | L | M | N | O | P | Q | R | S | T | U |

---------------------------------------------------------- 要求输入一串密文(密文中出现的字母都是大写字母,非字母的字符不用解码)对其进行

解密得到明文。

*/

#include

#define MAX_SIZE 100

using namespace std;

void main()

{

char a[MAX_SIZE];

int i=0;

printf("请输入一串密文:(以#结尾)");

while(i

{

cin>>a[i];

if(a[i]=='#')

break;

i++;

}

int temp;

temp=i;

i=0;

while(i

{

if(a[i]>='F'&&a[i]<='Z')

a[i]-=5;

else if(a[i]>='A'&&a[i]<='E')

a[i]+=21;

i++;

}

i=0;

while(i

{

printf("%c",a[i]);

i++;

}

printf("\n");

}

题目5:

/*题目5:(子串)给定n(1<=n<=10)个字符串,找到一个最长的字符串x,使得对给出的字符串中的任意一个y,

x或者是y的子串、或者x中的字符反序后是y的子串。*/

#include

#include

using namespace std;

#define CHAR char*

bool comp(char* x, char* y)

{

if( strstr( x, y )!=0 )

return 1;

else if( strstr( y, x )!=0 )

return 1;

return 0;

}

bool findx(int n, char* &des, CHAR* sour)

{

int count = 0;

int max = count;

bool flag = false;

for(int i=1; i

{

count = strlen( sour[i] );

for(int j=1; j

if( comp( sour[i], sour[j] ) == 0 )

break;

if( j == n+1 && count > max )

{

max = count;

flag = true;

des = sour[i];

}

}

return flag;

}

int main()

{

int n = 0;

do{

cout << "输入字符串的个数:";

cin >> n;

}while(n < 1 || n > 10);

CHAR* sour;

sour = new char*[n+1];

cout << "输入各字符串: ";

for(int i=0; i

{

sour[i] = new char[255];

gets(sour[i]);

}

char* temp ;

if( findx( n, temp, sour ) != 0)

{

cout << "结果为:";

puts(temp);

}

else

cout << "无匹配项!" << endl;

return 0;

}

题目6:

/*题目6:(分解因数)给出一个正整数a,要求分解成若干个正整数的乘积,即

a=a1*a2*a3*…*an,并且1

有多少种。*/

#include

#define Num_Prime 50

using namespace std;

int *PrimeElement(int *a,int &n,int num)//分解质因数

{

int *p=a;

n=0;

for(int i=2;i<=num;i++)

{

while(num!=i)

{

if(num%i==0)

{

*(p++)=i;

n++;

num=num/i;

}

else break;

}

}

*p=i-1;

n++;

return a;

}

int *CountSame(int *a,int &n)//判断各质因数重复次数

{

int *count=(int *)malloc(n*sizeof(int));

int *p=count;

int m=0;

for(int i=0;i

count[i]=1;

for(i=1;i

{

if(a[i]!=a[i-1])

{

count++;

m++;

}

else (*count)++;

}

n=m;

return p;

}

int Factorial(int num)//阶乘num!

{

int sum=1;

for(;num>1;num--)

sum*=num;

return sum;

}

int ElementNum(int *p,int n)//分解因数的方案总数

{

int all=0;

for(int i=0;i<=n;i++)

all+=p[i];

int sum=Factorial(all);

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

sum=sum/Factorial(p[i]);

return sum;

}

void main()

{

int *a=(int *)malloc(Num_Prime*sizeof(int));

int num,i=0,n=Num_Prime,sum;

printf("请输入一个正整数:");

scanf("%d",&num);

a=PrimeElement(a,n,num);

int *p=(int *)malloc(n*sizeof(int));

p=CountSame(a,n);

sum=ElementNum(p,n);

printf("正整数%d的分解因数方案有%d种!\n",num,sum);

free(a);

free(p);

}

题目 7:

/*题目7:假定学生信息包括学号(不超过20个字符)、姓名(不超过50个字符)和成绩(0~100之间的浮点

数),输入n(5<=n)个学生的信息,按成绩排序后输出并求所有学生成绩的平均值。*/

#include

#define Num_Of_Stu 5

using namespace std;

struct Student

{

char num[20];

char name[50];

}student[Num_Of_Stu];

void OrderUtoP(double a[],int n)//由大到小排序

{

for(int i=0;i

for(int j=i+1;j

if(a[i]

{

int temp;

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

void main()

{

double a[Num_Of_Stu],sum=0;

int i,j;

printf("请分别输入学生的学号、姓名以及成绩:\n");

for(i=0;i

{

cin>>student[i].num>>student[i].name>>student[i].grade;

a[i]=student[i].grade;

sum+=a[i];

}

OrderUtoP(a,Num_Of_Stu);

printf("按成绩由高到低排序:\n");

for(i=0;i

for(j=0;j

if(a[i]==student[j].grade)

cout<<"No."<

<<" "<

printf("该%d个学生的平均成绩为:\n",Num_Of_Stu);

cout<

}

题目 8:

/*题目8:定义结构体类型表示复数,并设计5个函数实现复数的读入、加法、减法、乘法、和模运算。

要求读入复数的函数的声明如下:

//假设complex_t为复数类型,函数参数c返回读入的复数、函数返回值

//表示读入状态,0表示读入失败,1表示读入成功。

int scan_complex(complex_t *c)*/

typedef struct

{

double imag;

}complex_t;

int scan_complex(complex_t *c)//读入

{

if(c)

{

printf("putin the real part:");

scanf("%f",c->real);

printf("putin the imag part:");

scanf("%f",c->imag);

return 1;

}

else return 0;

}

complex_t *plus_complex(complex_t *m,complex_t *n)//复数加{

complex_t *sum;

sum->real=m->real+n->real;

sum->imag=m->imag+n->imag;

return sum;

}

complex_t *minus_complex(complex_t *m,complex_t *n)//复数减{

complex_t *sum;

sum->real=m->real-n->real;

sum->imag=m->imag-n->imag;

return sum;

}

complex_t *multiply_complex(complex_t *m,complex_t *n)//复数乘{

complex_t *sum;

sum->real=m->real*n->real;

sum->imag=m->imag*n->imag;

return sum;

}

complex_t *divide_complex(complex_t *m,complex_t *n)//复数乘{

complex_t *sum;

sum->real=m->real/n->real;

sum->imag=m->imag/n->imag;

return sum;

}

double divide_complex(complex_t *m)//复数模

{

double sum;

sum=sqrt(pow(m->real,2)+pow(m->imag,2));

return sum;

}

题目9:

/*题目9:(多项式加法)编写一个程序实现两个多项式的加法运算,例如求2x^20-x^17+5x^9-7x^7+16x^5+10x^4+22x^2-15和

2x^19+3x^17+15x^10+7x^7-10x^5+4x^4+13x^2-7的和。*/

#include

using namespace std;

typedef struct LNode

{

float coef;//系数

int expn;//指数

struct LNode *next;

}LNode,*Linklist;

void CreatPolyn(Linklist &L,int m)

{

L=(Linklist)malloc(sizeof(LNode));

L->next=NULL;//建立一个带头结点的单链表

cout<<"按序输入多项式各项的系数和指数:"<

Linklist p;

for(int i=1;i<=m;i++)//表尾插入法

{

p=(Linklist)malloc(sizeof(LNode));

cin>>p->coef>>p->expn;

p->next=L->next;

L->next=p;

}

}

void PrintPolyn(Linklist L)//对一元多项式进行输出操作

{

if(L->next==NULL);

else

{

L=L->next;

if(L->expn!=0)

cout<coef<<"x^"<expn;

else

cout<coef;

while(L->next!=NULL)

{

L=L->next;

if(L->coef>0)

cout<<"+"<coef<<"x^"<expn;

if(L->coef<0)

cout<coef<<"x^"<expn;

}

}

}

Linklist AddPloyn(Linklist a,Linklist b) //多项式加法函数{

Linklist p,q,c;

c=a;

p=a->next;

q=b->next;

while(p!=NULL&&q!=NULL)

{

if(p->expnexpn)

{

c->next=p;

c=c->next;

p=p->next;

}

if(p!=NULL&&q!=NULL&&p->expn>q->expn)

{

c->next=q;

c=c->next;

q=q->next;

}

if(p!=NULL&&q!=NULL&&p->expn==q->expn)

{

p->coef=p->coef+q->coef;

c->next=p;

c=c->next;

p=p->next;

q=q->next;

}

}

c->next=p?p:q;

return(a);

}

void main()

{

Linklist pa,pb,pc;

int m,n;

cout<<"请输入多项式A的项数:";

cin>>m;

CreatPolyn(pa,m);

cout<<"A多项式为";

PrintPolyn(pa);

cout<<"\n请输入多项式B的项数:";

cin>>n;

CreatPolyn(pb,n);

cout<<"B多项式为";

PrintPolyn(pb);

cout<<"\nC=A+B=";

pc=AddPloyn(pa,pb);

PrintPolyn(pc);

cout<

}

题目10:

/*题目10:每个大学生可能会选择不同数量的课程,因此教务主任决定使用链表存储每个学生的课表,并使用结构体数组代表学生整体。下面给出该数据结构的一部分。

Id restp

每门课分几个班讲授,图中的记录给出了第一个学生(数组元素0,id为1111)选择了CIS120的1班课程,该课程有3个学分,他还选择了HIS001的2班课程,该课程有4个学分;第二个学生(数组元素1,id为1234)没有选择任何课程,等等。定义产生该结构体的必要的数据类型。为产生原始的学生数组、插入一个学生的初始课表、加入一门课程、放弃一门课程分别编写一个函数,并在main函数中进行测试。*/

///////////////////////////////////////head.h////////////////////////////////// #ifndef LCOURSE__H

#define LCOURSE__H

typedef struct LNode

{

char name[20]; //课程名称

char id[10]; //课程编号

int classes; //课程班

int gp; //课程学分

struct LNode *next;

}LNode,*LPNode;

typedef struct LHead

{

char id[10]; //学生ID

int num_select; //学生选课数目

struct LNode *snext;

LHead *dnext;

}LHead,*LPHead;

bool CreateCourse( int num, LPNode &course );

bool CreateStdu( LPHead &L, int m, LPNode course);

LPNode CreateCourseFro(int n, LPNode course);

bool InsertStdu( LPHead stdu, char sou_id[], char des_id[], LPNode course );//插入一个学生的初始课表

bool AddCourse(LPHead stdu, char id[], LPNode course );//加入一门课程

bool DelCourse(LPHead stdu, char sid[], char cid[], int classes);//放弃一门课程LPNode FindIdCourse( char id[], int classes, LPNode course );

bool DisplayCourse( LPNode g_course );

bool DisplayStdu( LPHead stdu );

#endif

////////////////////////////head.cpp/////////////////////////////////////////// #include

#include "head.h"

using namespace std;

bool CreateCourse( int num, LPNode &course )

{//创建课程信息,课程链表,表头插入法建表——带头结点,头结点中gp域保存课程总数,//num为课程信息链表中课程数目,course为课程信息链表指针

if( course != NULL )

return false;

if( ( course = ( LPNode )malloc( sizeof( LNode ) ) ) == NULL )

return false;

course->next = NULL;

course->gp = num;

LPNode temp;

for( int i=0; i

{

if( ( temp = ( LPNode )malloc( sizeof( LNode ) ) ) == NULL )

return false;

cout << "输入课程" << i+1 << "名称:";

cin >> temp->name;

cout << "输入课程ID:";

cin >> temp->id;

cout << "输入该课程班别:";

cin >> temp->classes;

cout << "输入该课程的学分:";

cin >> temp->gp;

temp->next = course->next;

course->next = temp;

}

return 1;

}

bool DisplayCourse( LPNode course )

{//显示课程信息,course为课程信息链表指针

if( course == NULL || course->next == NULL )

{

cout << "课程信息为空!" << endl;

return false;

}

LPNode temp = course->next;

int n = course->gp;

cout << "课程信息如下:";

cout << "--------------------------------------------------------------" << endl;

cout << "序号名称 ID 学分班级" << endl;

for( int i=0; i

{

cout << i+1 << '\t' << temp->name << '\t' << '\t' \ << temp->id << '\t' << temp->gp << '\t' << temp->classes << '\t';

cout << endl;

temp = temp->next;

}

cout <<

"----------------------------------------------------------------------------" << endl;

return true;

}

bool DisplayStdu(LPHead stdu)

{

if( stdu == NULL || stdu->dnext == NULL)

{

cout << "学生信息为空!";

return false;

}

LPHead temp = stdu->dnext;

int n = stdu->num_select;

cout << "学生信息如下:";

cout << "--------------------------------------------------------------" << endl;

cout << "学生ID 所选课程" << endl;

cout << " ID" << '\t' << "班别" << '\t' << "学分" << '\t';

cout << "ID" << '\t' << "班别" << '\t' << "学分" << '\t';

cout << "ID" << '\t' << "班别" << '\t' << "学分" << '\t' << endl;

for( int i=0; i

{

cout << temp->id << '\t';

LPNode tt = temp->snext;

int m = temp->num_select;

for( int j=0; j

{

//cout << " ID" << '\t' << "班别" << '\t' << "学分";

cout << tt->id << '\t' << tt->classes << '\t' << tt->gp << '\t';

tt = tt->next;

}

cout << endl;

temp = temp->dnext;

}

cout <<

"----------------------------------------------------------------------------" << endl;

return true;

}

bool CreateStdu( LPHead &stdu, int m, LPNode course)

{//产生原始学生数组,学生链表,表尾插入法建表——带表头,

//头结点的num_select域保存学生总数m为学生数目,course为课程信息链表指针

if(stdu != NULL)

return false;

if( ( stdu = ( LPHead )malloc( sizeof( LHead ) ) ) == NULL )

return false;

stdu->snext = NULL;

stdu->dnext = NULL;

stdu->num_select = m;

LPHead stdutemp = stdu;

for( int i=0; i

{

LPHead temp;

if( ( temp = ( LPHead )malloc( sizeof( LHead ) ) ) == NULL )

return false;

cout << "输入学生" << i+1 << "的ID:";

cin >> temp->id;

cout << "输入该学生的选课数目:";

cin >> temp->num_select;

temp->snext = NULL;

if(temp->num_select == 0)

{

temp->dnext = stdutemp->dnext; //表尾插入

stdutemp->dnext = temp;

stdutemp = stdutemp->dnext;

continue;

}

LPNode node = NULL;

for(int j=0; jnum_select; j++)

{

char tid[10];

int classes;

cout << "输入课程" << j+1 << "的ID及班级:";

cin >> tid >> classes;

LPNode tnode = FindIdCourse( tid, classes, course);

LPNode tempnode;

if( ( tempnode = ( LPNode )malloc( sizeof( LNode ) ) ) == NULL ) return false;

tempnode->classes = tnode->classes;

tempnode->gp = tnode->gp;

strcpy( tempnode->id, tnode->id );

strcpy( tempnode->name, tnode->name );

tempnode->next = NULL;

if( j == 0 )

{

tempnode->next = temp->snext; //表头插入

temp->snext = tempnode;

node = tempnode;

}

else

{

tempnode->next = node->next; //表头插入

node->next = tempnode;

}

}

temp->dnext = stdutemp->dnext; //表尾插入

stdutemp->dnext = temp;

stdutemp = stdutemp->dnext;

}

return true;

}

bool InsertStdu( LPHead stdu, char sou_id[], char des_id[], LPNode course ) {//插入一个学生的初始课表,插入的学生数据位于id为sou_id的学生数据之后, //des_id为插入的学生的ID,course为该课程信息链表指针

if(course->next == NULL || stdu->dnext == NULL)

return false;

LPHead stdutemp = stdu->dnext;

while(stdutemp != NULL && strcmp( stdutemp->id, sou_id ) != 0 ) {

stdutemp = stdutemp->dnext;

}

LPHead temp = NULL;

if( ( temp = ( LPHead )malloc( sizeof( LHead ) ) ) == NULL ) return false;

strcpy( temp->id, des_id );

int n = 0;

cout << "输入该学生的课程数:";

cin >> n;

temp->num_select = n;

LPNode node = CreateCourseFro( n, course );

temp->snext = node;

temp->dnext = stdutemp->dnext;//插入学生数据

stdutemp->dnext = temp;

stdu->num_select++;

return true;

}

bool AddCourse(LPHead stdu, char id[], LPNode course )

{//加入一门课程,id为学生ID,course为课程信息链表指针

if( stdu == NULL || stdu->dnext == NULL )

return false;

LPNode node = NULL;

if( ( node = ( LPNode )malloc( sizeof( LNode ) ) ) == NULL ) return false;

LPNode tempnode = CreateCourseFro( 1, course );

LPHead temp = stdu->dnext;

while( temp != NULL && strcmp( temp->id, id ) != 0 )

{temp = temp->dnext;}

temp->num_select++;

tempnode->next = temp->snext;

temp->snext = tempnode;

return true;

}

bool DelCourse(LPHead stdu, char sid[], char cid[], int classes) {//放弃一门课程,sid为学生ID,cid为课程ID

LPHead temp = stdu->dnext;

while( temp != NULL && strcmp( temp->id, sid ) != 0 )

{temp = temp->dnext;}

if(temp == NULL)

return false;

LPNode temp_;

if(strcmp( temp->snext->id, cid ) != 0)

{

temp_ = temp->snext;

while( temp_ != NULL && strcmp( temp_->next->id, cid ) != 0 )

{temp_ = temp_->next;}

if(temp_ == NULL)

return false;

LPNode t = temp_->next;

temp_->next = t->next;

delete t;

}

else

{

LPNode t = temp->snext;

temp->snext = t->next;

delete t;

}

temp->num_select--;

return true;

}

LPNode FindIdCourse(char id[], int classes, LPNode course)

{//返回课程信息链表中ID为id的课程指针

LPNode temp = course->next;

while( temp != NULL && strcmp( temp->id, id ) != 0 && temp->classes != classes) {temp = temp->next;}

return temp;

}

LPNode CreateCourseFro(int n, LPNode course)

{

LPNode node;

if( ( node = ( LPNode )malloc( sizeof( LNode ) ) ) == NULL )

return false;

node->gp = n;

node->next = NULL;

if( n != 0)

{

LPNode tempnode = node;

char tid[10];

int classes;

for(int i=0; i

{

cout << "输入课程ID及班级:";

cin >> tid >> classes;

LPNode temp;

if( ( temp = ( LPNode )malloc( sizeof( LNode ) ) ) == NULL )

return false;

LPNode tnode = FindIdCourse( tid, classes, course);

temp->classes = tnode->classes;

temp->gp = tnode->gp;

strcpy( temp->id, tnode->id );

strcpy( temp->name, tnode->name );

temp->next = tempnode->next;

tempnode->next = temp;

}

}

return node->next;

}

////////////////////////////////main.cpp///////////////////////////////// #include

#include "head.h"

using namespace std;

LPNode g_course = NULL;

LPHead stdu = NULL;

void InitPage();

void SelectPage();

void Welcome();

void ScanPage();

void main()

{Welcome();}

void ScanPage()

{

system("cls");

cout << "---------------1.学生选课情况" << endl;

cout << "---------------2.课程信息情况" << endl;

cout << "---------------3.返回 " << endl;

char flag = '0';

cout << "操作..." << endl;

cin >> flag;

while(flag != '1' || flag != '2' || flag != '3')

{

switch( flag )

{

case '1':

{

if( DisplayStdu( stdu ) == NULL )

cout << "学生选课情况暂无!" << endl;

break;

}

case '2':

{

C语言上机练习题

上机练习题 完成 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 完成 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 完成 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。完成 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 完成 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 完成 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 完成 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 完成 8.输入1~10之间的一个数字,输出它对应的英文单词。 完成 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 完成 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 完成 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境;

C语言上机练习题

上机练习题 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 8.输入1~10之间的一个数字,输出它对应的英文单词。 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③输入原始正整数x; ④从x中分解出个位数字digit; ⑤合并个位digit至逆数y中; ⑥原始数x缩小10倍:x=x/10; ⑦如果x非零,则转④; ⑧输出逆数y,结束 13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构 成)。 14.输入10个数,分别统计其中正数、负数、零的个数。 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)

计算机c语言简单的练习题及答案

1.从矩形的长,宽,输出面积(长为6.5,宽为4.5) #include main() { float length,width,area; scanf("%f%f",&length,&width); area=length*width; printf("area=%f\n",area); } 2.定义符号常量,从键盘输入圆的半径 3.5,求圆的周长和面积#define PI 3.14 #include main() { float r,c,area; scanf("%f",&r); c=2*PI*r; area=PI*r*r; printf("c=%f,area=%f\n",c,area); } 3.练习上机手册P10 3,4,5题,看看输出结果,并思考为什么 4.从键盘输入一个整数,输出其绝对值(采用两个if语句实现)#include main()

{ int i; scanf("%d",&i); if(i>=0) printf("i=%d\n",i); if(i<0) printf("i=%d\n",-i); } 5.从键盘输入一个整数,输出其绝对值(采用if——else语句实现) #include main() { int i; scanf("%d",&i); if(i>=0) printf("i=%d\n",i); else printf("i=%d\n",-i); } 6.从键盘输入年份,判断是不是闰年,如果是,输出是闰年(上机考试重点) #include main() {

C语言上机练习题

C语言上机练习题 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

1.阅读以下程序,说出其功能和运算结果。 #include<> intmain() { intn; intfactorial(intn); scanf("%d",&n); printf("%d\n",factorial(n)); return0; } intfactorial(intn) { inti,fact=1; for(i=1;i<=n;i++) fact=fact*i; returnfact; } 若输入5↙ 2.改正下列程序中的错误,在屏幕上显示“WelcometoYou!”。 #include<> intmian() { printf("WelcometoYou!\n") return0; } 3.若输入4,程序运行结果为【1】,若输入-4,运行结果为【2】,若输入10,运行结果为【3】。 #include<> main() { intx,y; scanf("%d",&x); if(x<1) {y=x;

printf("x=%d,y=x=%d\n",x,y); } elseif(x<10) {y=2*x-1; printf("x=%d,y=2*x-1=%d\n",x,y); } else {y=3*x-11; printf("x=%d,y=3*x-11=%d\n",x,y); } } 4.当输入19,2,21时下列程序运行的结果是()。 #include<> main() {inta,b,c,max; printf("pleasescanthreenumbera,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if(max

西工大C语言上机考试题库

1:2:3 #include #include int main() { int i=0,j=0,k=0,a=0,b=0,c=0,l=0,m=0,n=0,d=0,p=0,q=0; for(i=1;i<=3;i++) { for(j=1;j<=9;j++) { if(i!=j) { for(k=1;k<=9;k++) { if(k!=j&&i!=k) { a=i*100+j*10+k; b=a*2; c=a*3; l=b%10,d=c%10; m=(b%100)/10,p=(c%100)/10; n=b/100,q=c/100; if(l!=0&&m!=0&&n!=0&&d!=0&&p!=0&&q!=0) if(i!=l&&i!=m&&i!=n&&j!=l&&j!=m&&j!=n&&k!=l&&k!=m&&k!=n) if(i!=d&&i!=p&&i!=q&&j!=d&&j!=p&&j!=q&&k!=d&&k!=p&&k!=q) if(l!=d&&l!=p&&l!=q&&m!=d&&m!=p&&m!=q&&n!=d&&n!=p&&n!=q) printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 8 #include"stdio.h" int main() { int a,b[10],m=0,n=0,p; int i,j,k; scanf("%d",&a); for(i=1;i<=a;i++) { m=0; n=0; p=i; for(j=0;p!=0;j++) { b[j]=p%10; p=p/10; } for(k=0;k

C语言上机练习题_828701982

C语言上机考试练习题(1) 说明:我们已经学习完成了基本数据类型、基本控制语句,以及数组、函数这些知识了,请同学们看看附件中的这些题目是否能够快速编写出来?可能有个别题目与过去的练习有些重复,请尽量不要去参考过去的答案。如果现在编写起来困难还很多,那你就要加倍努力了。 1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求: (1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。 (2)子函数的返回值为-1表示未找到,否则返回子串的位置(起始下标)。#include #include void main() { int cmpsubstr(char *s1,char *s2); char str1[20],str2[50]; char *s1=str1,*s2=str2; gets(str1); gets(str2); printf("%d",cmpsubstr(s1,s2)); } int cmpsubstr(char *s1,char *s2) { int i,d,a=0,situation=0; d=strlen(s1); for(i=0;*(s2+i)!='\0';i++) {

if(*(s1+a)==*(s2+i)) { a++; if(a==d) { situation=1; break; } } else { a=0; } } if(situation==0)return(-1); else return(i-d+2); } 2、输入一个字符串,有数字和非数字字符,如:a123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存放到数组a中。例如,123放在a[0]中,456放在a[1]中等等,统计共有多少个整数,并输出这些整数。要求:(1)在主函数中输入字符串,并输出结果。调用子程序处理字符串。 (2)子函数的返回值为整数的个数。 #include #include void main() { int search(char *str,int *sum); char str[100]; int d,sum[20],i;

c语言上机操作题

实验一上机操作初步(2学时) 一、实验方式: 一人一机 二、实验目的: 1、了解C语言程序的特点与基本结构。 2、了解C语言程序的编译环境。 3、掌握使用C语言编写和调试程序的流程:编辑-保存-编译-构建(组件)-执行。 4、掌握C语言程序在Visual C++ 6.0环境下的调试过程。 5、初步了解C程序的特点。 三、实验内容: 说明:前三题为必做题目,第四题为选做题目。 1、编辑实验教材P2程序,掌握C语言程序在Visual C++6.0环境下的编译流程和调试过程。(实验教材P2) 2、在屏幕上实现下列图案的输出: **************************** hello,welcome to china! good bye! **************************** (实验教材P11) 3、计算两个数x和y的和。(教材P5【例1-2】) 4、求两个数的最大值。(教材P5【例1-3】) 四、实验步骤与过程: 1、#include "stdio.h" void main( ) { printf("Hello,World!"); printf("\n"); } 2、 五、实验调试记录: 1、 2、 实验二简单的C程序设计(2学时) 一、实验方式: 一人一机 二、实验目的: 1、掌握C语言的数据类型。 2、掌握标识符、常量、变量的定义及使用。 3、掌握C语言的常用运算符及表达式。 三、实验内容:

说明:前四题为必做题目,第五题为选做题目。 1、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。(实验教材P18) 2、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。(实验教材P27) 3、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。(实验教材P21) 4、输入并运行以下程序,分析运行结果。(实验教材P27) #include “stdio.h” void main( ) { int i,j; i=8; j=10; printf(“%d,%d\n”,++i,++j); i=8; j=10; printf(“%d,%d\n”,i++,j++); i=8; j=10; printf(“%d,%d\n”,++i,i); i=8; j=10; printf(“%d,%d\n”,i++,i); } 5、从键盘上输入3个数a、b、c,求一元二次方程的解x1、x2,并分别把这两个解的绝对值作为圆柱的半径与高,计算圆柱的体积。(实验教材P20) 四、实验步骤与过程: 五、实验调试记录: 实验三选择结构程序设计(一)(2学时) 一、实验方式: 一人一机 二、实验目的: 1、掌握单分支if语句的使用方法。 2、掌握双分支if-else语句的使用方法。 3、掌握多分支语句的一般形式和使用方法。 三、实验内容: 说明:前四题为必做题目,第五题为选做题目。 1、从键盘输入一个3位整数,请输出该数的逆序数。(实验教材P27) 2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。(实验教材P27) 3、判断箱子是正方体还是长方体。请根据注释将程序填写完整。(实验教材P33) 4、编写程序,通过输入x的值,计算阶跃函数y的值。(教材P70【例5-4】)

C语言习题

练习题 2015-2016(2)重修) 判断 1. C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .BAK 的文件。( ) 2.在 C 程序中, APH 和 aph 代表不同的变量。( ) 3.C语言中数据类型只有整型、实型和字符型。( ) 4.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。() 5.Break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。() 6.函数strlen("ASDFG\n")的值是7。() 7.结构体类型只有一种。() 8.构成数组的各个元素可以有不同的数据类型。( ) 9.C语言中字符串的结束符是'\0'。( ) 10.数组名代表数组的首地址。( ) 11.函数的递归调用不过是一个函数直接或间接地调用它自身。() 12.通过return语句,函数可以带回一个或一个以上的返回值。() 13.Char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。() 14.若有定义:char *p(char a[10]);则p是函数名。() 15.用fopen("file","r+");打开的文件"file"可以进行修改。() C概述,数据类型,运算符,表达式,选择结构 1.以下叙述中正确的是()。 A.程序设计的任务就是编写程序代码并上机调试 B.程序设计的任务就是确定所用数据结构 C.程序设计的任务就是确定所用算法 D.以上三种说法都不完整 2. C语言源程序的基本单位是()。 A.过程 B.函数 C.子程序 D.标识符 3. C语言规定,在一个源程序中main函数的位置()。 A.必须在最开始 B.必须在最后 C.必须在预处理命令的后面 D.可以在其他函数之前或之后 4.以下叙述中正确的是()。 A.C语言系统以函数为单位编译源程序 B.main函数必须放在程序开始 C.用户定义的函数可以被一个或多个函数调用任意多次 D.在一个函数体内可以定义另外一个函数 5. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符() A.必须为字母 B.必须为下划线 C.必须为字母或下划线 D.可以是字母,数字和下划线中任一种字符 6.下面四个选项中,均是合法转义字符的选项是() A.'\'' '\\' '\n' B.'\' '\017' '\"' C.'\018' '\f' 'xab' D.'\\0' '\101' 'xlf' 7.下面四个选项中,均是不合法的用户标识符的选项是() A.A P_0 do B.float la0 _A C.b-a goto int D._123 temp INT 8.已知有声明 char c='1';int x=300;float t=35000;double d=3.1234567e10; ,则以下表达式求值 时除( )外其结果都可能是不准确的。 A.x=t/c B.t=d/x C.t=d/le5f D.t=x+c 9.已知有声明"int n;float x,y;",则执行语句"y=n=x=3.89;"后,y的值为()。 A.3 B.3.0 C.3.89 D.4.0 10.已知有声明"int a=3,b=4,c=5;",以下表达式中值为0的是()。

c语言经典程序100题

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: # include main() { double i; double bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%lf",&i); bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015;

C语言期末上机考试题及答案

C语言上机考试题—01 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++ ) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判 断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年 \n"); else printf("不是闰 年\n"); } C语言上机考试题—02 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i #include main() { char str[81]; int i,j=0,w=1,s=0; printf("请输入一串字符: \n"); gets(str); for(i=0;i

C语言上机练习题及复习资料

1输入三个整数x,y,z,把这三个数由小到大输出。 # include void main() { int x,y,z,a; scanf ("%d,%d,%d",&x,&y,&z); if(x>y) {a=x; x=y;y=a; } if(x>z) { a=x; x=z; z=a; } if(y>z) {a=y; y=z; z=a; } printf("%d,%d,%d\n",x,y,z); } 2输入圆的半径,输出圆的周长和面积。 # include # define PI 3.1415926 # define S ==PI*r*r # define V (4.0/3)*PI*r*r*r void main() { double r; printf("please input r:"); scanf("%lf",&r); printf("area is %.4lf\n",S); printf("volume is %.4lf\n",V); } 输入正方形的边长,输出正方形的周长和面积。 # include void main() { float c,zc,mj; printf("输入你的正方形"); scanf("%f\n",&c); zc=4*c; mj=c*c; printf("周长%f,面积%f,边长%f",zc,mj,c); } 3用格式输入函数输入3个字符,并用输出函数反向输出3个字符和他们的ASCII 码。 # include int main() {char-ch1,ch2,ch3;

计算机二级C语言上机考试操作步骤及流程

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,

点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 打开

计算机考试二级C语言上机试题下[23]

计算机考试二级C语言上机试题下[23] 第 53套 试题说明 *********************************** 第一题(30分) 给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中 从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结 果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! *********************************** 第二题(30分) 给定程序MODI1.C中函数fun的功能是: 将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。 例如, 字符串中的数据为: AABBCCDDEEFF, 则输出应当是:ABBCDDEFF。 请改正函数fun中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! *********************************** 第三题(40分) 请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维数组中。 例如, 二维数组中的数据为: 33 33 33 33 44 44 44 44

55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。

计算机二级C语言上机南开100题

计算机二级C语言上机南开100题 1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n 返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp;

for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; } 4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 答案: void fun(char *tt, int pp[]) { int i; for (i=0;i<26;i++) pp[i]=0; while (*tt) { switch (*tt) { case ‘a’: pp[0]++;break; case ‘b’: pp[1]++;break; case ‘c’: pp[2]++;break; case ‘d’: pp[3]++;break; case ‘e’: pp[4]++;break; case ‘f’: pp[5]++;break; case ‘g’: pp[6]++;break; case ‘h’: pp[7]++;break; case ‘i’: pp[8]++;break; case ‘j’: pp[9]++;break; case ‘k’: pp[10]++;break; case ‘l’: pp[11]++;break; case ‘m’: pp[12]++;break; case ‘n’: pp[12]++;break; case ‘o’: pp[14]++;break; case ‘p’: pp[15]++;break;

全国计算机三级网络技术C语言南开上机南开100题(WORD版)

*******************************************************************************☆题目1 请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k 个素数存入数组xx传回。 最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。 部分源程序存在文件prog1.c中。 例如:若输入17 5 则应输出:19,23,29,31,37。 请勿改动主函数main()和写函数writeDat()的内容。 int isP(int m) { int i; for(i=2;i0;m++) if(isP(m)) { xx[s++]=m; k--;} } ☆题目2 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a 中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后main( )函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 void jsVal() { int i,j,qw,bw,sw,gw; for(i=0;i

大学本科C语言上机考试题

C语言程序设计上机考试题 班级:姓名:学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include int main() {inta,b,c,e,d,f,g; printf("请输入三个数\n"); scanf("%d,%d,%d",&a,&b,&c); d=(a>b?a:b); e=(d>c?d:c); printf("Max is %d\n",e); f=(a int main() {float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||score<0)); {printf("\n输入有误,请输入); scanf("%f",&score); } switch((int)(score/10)) {case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break;

case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score.grade); return 0; } 3、编写一个四则运算程序,输出计算结果。 #include int main() {intc,d,e; floata,b,f; printf("请输入两个数"); scanf("%f,%f",&a,&b); c=a+b; d=a-b; e=a*b; f=a/b; printf("加法结果为%d\n",c); printf("减法结果为%d\n",d); printf("乘法结果为%d\n",e); printf("除法结果为%f\n",f); return 0; } 4.100以内的素数 从键盘输入一个正整数,判断该整数是否为素数。 #include int main() { intn,i; printf("\n"); scanf("%d",&n); for (i=2;i<=n-1;i++) if(n%i==0) break; if(i

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

c语言上机考试题

上机考试:6月2日 13:30 不准携带:课本/参考书/参考资料/移动存储设备/草纸 一定要带:学生证/签字笔 1 用起泡法对N=10个整数由大到小排序。10个整数由键盘输入,排序后从屏幕输出结果 2 编写一函数,从实参传来一个字符串,分别统计其中数字、大写字母、小写字母和其它字符的个数,输入输出在main函数中完成 3 用一函数inv将一个字符串的字符逆序排列。输入输出在main函数中完成。要求在inv中用指针处理。4 求200之内的素数的和。从屏幕输出结果 5 从屏幕输入一行字符,将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母,其它字符不变,从屏幕输出结果 6 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次落地后又反弹多高? 7 对N=20个字符由大到小排序。20个字符由键盘输入,排序后从屏幕输出结果 8 有一字符串,把其中的字母a和A去掉,成为一个新字符串。原字符串从键盘输入。从屏幕输出结果 9 求Fibonacci数列的前30项的和。从屏幕输出结果。Fibonacci数列为: F(1)=1,(n=1) F(2)=1,(n=2) F(n)=F(n-2)+F(n-1),(n>=3) 10 写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 11 从键盘输入一个大于2的整数,判断是否是素数。从屏幕输出结果。要求用函数处理 12 从键盘输入月份,输出这个月有多少天。要求用函数处理 13 求两个数的最大公约数。要求用函数处理 14 求两个数的最小公倍数。要求用函数处理 15 从屏幕输入3个整数,按从小到大顺序输出,要求用指针进行处理 16

大学本科C语言上机考试题

C语言程序设计上机考试题 班级::学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include int main() {int a,b,c,e,d,f,g; printf("请输入三个数\n"); scanf("%d,%d,%d",&a,&b,&c); d=(a>b?a:b); e=(d>c?d:c); printf("Max is %d\n",e); f=(a int main() {float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||score<0)); {printf("\n输入有误,请输入); scanf("%f",&score); } switch((int)(score/10)) {case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break;

case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score.grade); return 0; } 3、编写一个四则运算程序,输出计算结果。 #include int main() {int c,d,e; float a,b,f; printf("请输入两个数"); scanf("%f,%f",&a,&b); c=a+b; d=a-b; e=a*b; f=a/b; printf("加法结果为%d\n",c); printf("减法结果为%d\n",d); printf("乘法结果为%d\n",e); printf("除法结果为%f\n",f); return 0; } 4.100以的素数 从键盘输入一个正整数,判断该整数是否为素数。 #include int main() { int n,i; printf("\n"); scanf("%d",&n); for (i=2;i<=n-1;i++) if(n%i==0) break; if(i

相关文档
相关文档 最新文档