Ⅰ c语言编程题
#include<stdio.h>
voidmain()
{
charch;
scanf("%c",&ch);
if(ch>64&&ch<91)
printf("%c",ch+32);
Ⅱ c语言简单编程题目
做过类似的题目 给你参考
Ⅲ 求教c语言的编程题目
根据题意构建学生结构体。查询分析。
1.手动录取学生信息对应我的函数iputCStus,连续输入一个班级的学生信息,构建一条链表,返回头节点,想创建多个班级,反复调用即可。
2.统计平均分和最高最低分,对应我的函数showById。
3.统计功能对应函数tjRN。
另外,由于演示和测试需要一组学生信息,反复手动输入不合理,所以我又单独写了一个随机数自动生成数据的函数init,你不需要可以删除。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <malloc.h>
#define SN 3//学科门数
#define MINS 60//不及格阀值,低于该值不及格
typedef struct student
{
char id[10];
char name[10];
int scores[SN];
struct student *next;
}STU;
STU *iputCStus();//输入一个班级的学生信息,创建链表,成功返回头节点,失败返回NULL
void freeSList(STU *stusHead);// 释放链表
void showById(STU *stusHead);//按照学号输出成绩
void showBySc(STU *stusHead);//每门课程的平均分、最高分、最低分
void tjRN(STU *stusHead);//统计区间人数60以下,[60~79],[80~89],[90及以上],返回数组
int main()
{
//----测试用!!!代替手动输入---------
STU *init();
STU *stusHead=init();
//-------------------------------------
//题目要的手动输入--替换上面的测试函数--------------
//STU *stusHead=iputCStus();
//--------------------------------------------------
showById(stusHead);
showBySc(stusHead);
tjRN(stusHead);
return 0;
}
STU *init()//测试用函数,不需要可以删除,用到头文件stdlib和time也可以一并删除
{
#define STN 9//测试生成的学生数量
int i,j,sc;
char snum[STN];
STU *stusTail=NULL;
static STU stusHead,stusNew[STN];
srand(time(NULL));
printf("---开始生成测试用数据链表(50~100随机数作为成绩)---- ");
for(i=0;i<STN;i++)
{
strcpy(stusNew[i].id,"S00");
strcat(stusNew[i].id,itoa(i+1,snum,10));
strcpy(stusNew[i].name,"学生");
strcat(stusNew[i].name,snum);
for(j=0;j<SN;j++)
{
sc=rand()%51+50;//50~100的随机数
stusNew[i].scores[j]=sc;
}
if(i==0)
stusHead.next=&stusNew[i];
else
stusTail->next=&stusNew[i];
stusTail=&stusNew[i];
}
return &stusHead;
}
void freeSList(STU *stusHead)
{
STU *stusLast=NULL;
if(stusHead)
while(stusHead->next)
{
if(stusLast)
free(stusLast);
stusLast=stusHead->next;
stusHead=stusHead->next;
}
if(stusLast)
free(stusLast);
if(stusHead)
free(stusHead);
}
void tjRN(STU *stusHead)//统计区间人数60以下,[60~79],[80~89],[90及以上],返回数组
{
STU *stusHSave=stusHead;
int scnt=0,i,tj[SN][4];
for(i=0;i<SN;i++)
{
tj[i][0]=tj[i][1]=tj[i][2]=tj[i][3]=0;
printf(" 课程%d统计结果: ",i+1);
while(stusHead->next)
{
if(stusHead->next->scores[i]<60)
tj[i][0]++,printf("学号:%-5s 成绩:%3d不及格 ",stusHead->next->id,stusHead->next->scores[i]);
if(stusHead->next->scores[i]>=60 && stusHead->next->scores[i]<=79) tj[i][1]++;
if(stusHead->next->scores[i]>=80 && stusHead->next->scores[i]<=89) tj[i][2]++;
if(stusHead->next->scores[i]>=90) tj[i][3]++;
if(i==0) scnt++;
stusHead=stusHead->next;
}
printf("不及格人数共计:%d ",tj[i][0]);
printf("60-80分的人数为:%d,占比:%.0f%% ",tj[i][1],tj[i][1]*1.0/scnt*100);
printf("80-90分的人数为:%d,占比:%.0f%% ",tj[i][2],tj[i][2]*1.0/scnt*100);
printf("90分以上的人数为:%d,占比:%.0f%% ",tj[i][3],tj[i][3]*1.0/scnt*100);
stusHead=stusHSave;
}
}
void showBySc(STU *stusHead)
{
float avg[SN];
int i,sum[SN]={0},max[SN]={0},min[SN]={0},sCNT=0;
STU *stusHSave=stusHead;
printf(" ");
for(i=0;i<SN;i++)
{
if(stusHead->next)
max[i]=min[i]=stusHead->next->scores[i];
while(stusHead->next)
{
if(stusHead->next->scores[i]>max[i])
max[i]=stusHead->next->scores[i];
else if(stusHead->next->scores[i]<min[i])
min[i]=stusHead->next->scores[i];
sum[i]+=stusHead->next->scores[i];
sCNT++;
stusHead=stusHead->next;
}
avg[i]=sum[i]*1.0/sCNT;
stusHead=stusHSave;
}
for(i=0;i<SN;i++)
printf("课程%d的平均分为%.1f,最高分为%d,最低分为%d ",i+1,avg[i],max[i],min[i]);
printf(" ");
}
void showById(STU *stusHead)
{
int i;
printf(" ");
while(stusHead->next)
{
printf("学号:%-5s的成绩分别为:",stusHead->next->id);
for(i=0;i<SN;i++)
printf("%3d ",stusHead->next->scores[i]);
printf(" ");
stusHead=stusHead->next;
}
}
STU *iputCStus()
{
int i;
char c;
STU *stusHead=NULL,*stuNew=NULL,*stuTail=NULL;
stusHead=(STU *)malloc(sizeof(STU));
if(!stusHead) return NULL;
stusHead->next=NULL;
while(1)
{
stuNew=(STU *)malloc(sizeof(STU));
if(!stuNew)
{
freeSList(stusHead);
return NULL;
}
stuNew->next=NULL;
printf("请输入学生学号:"),scanf("%s",stuNew->id);
printf("请输入学生姓名:"),scanf("%s",stuNew->name);
for(i=0;i<SN;i++)
printf("请输入学科%d成绩:",i+1),scanf("%d",&stuNew->scores[i]);
if(stusHead->next==NULL)
stusHead->next=stuNew;
else
stuTail->next=stuNew;
stuTail=stuNew;
getchar();
c=0;
while(c!='Y' && c!='N')
printf(" 是否继续录入?Y/N "),c=getchar();
printf(" ");
if(c=='N')
break;
}
return stusHead;
}
Ⅳ 简单c语言编程题
根据题意,程序分三个主要功能:1、从数组中查找一个整数。2、向数组插入一个整数。3、数组升序排列。
一、其中查找功能,数组无序或升序对应二种写法(直接遍历比较、二分法)。
对于升序数组用二分法查找更快(本案例只有10个数,如数字量大则效果更明显)。
二、数组插入功能,将插入位置及其往后的元素均后移一位(数组大小需多预留1位)。
另外:重复的代码段要写成独立函数,避免代码冗余。
下面是代码(数值我用的随机数填充,你想手动输入自添scanf函数):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 10//最大整数个数
void input(int nums[],int len);//输入
void showNum(int nums[],int len);// 打印数组
void px(int nums[],int len);//排序
int checkNum(int nums[],int len,int n);//检查n是否存在于无序数组num,是返回下标,否将n插入数组并返回-1。
int checkNumPX(int nums[],int len,int n);//检查n是否存在于升序数组num,是返回下标,否将n插入对应位置并返回-1。
void move1(int nums[],int len,int inx);//从下标inx开始的元素,全部往后移动1位(inx下标空出来给插入)
int main()
{
int nums[M+1],len=M+1,inx,n;//预留一位给插入
srand(time(NULL));
input(nums,len-1);
showNum(nums,len-1);
printf("请输入要查找的数n:"),scanf("%d",&n);
inx=checkNum(nums,len-1,n);
if(inx!=-1) printf("存在!下标是%d ",inx);
if(inx==-1) printf("不存在!已在数组末尾插入,插入后的数组为: "),showNum(nums,len);
printf(" -----------------------下面是问题2------------------------------- ");
input(nums,len-1);
px(nums,len);
showNum(nums,len-1);
printf("请输入要查找的数n:"),scanf("%d",&n);
inx=checkNumPX(nums,len-1,n);
if(inx!=-1) printf("存在!下标是%d ",inx);
if(inx==-1) printf("不存在!已在插入数组对应的位置 "),showNum(nums,len);
return 0;
}
void input(int nums[],int len)
{
int i;
for(i=0,printf("生成%d个2位随机整数...... ",len);i<len;nums[i]=rand()%90+10,i++);//10~99随机数
}
void showNum(int nums[],int len)
{
int i;
for(i=0,printf("当前数组元素为: ");i<len;printf("%d ",nums[i]),i++);
printf(" ");
}
void px(int nums[],int len)
{
int i,j;
for(i=0,printf("对数组进行升序排序...... ");i<len;i++)
for(j=i+1;j<len;j++)
if(nums[i]>nums[j]) nums[i]^=nums[j],nums[j]^=nums[i],nums[i]^=nums[j];
}
int checkNum(int nums[],int len,int n)
{
int i;
for(i=0,printf("数组中按元素顺序查找%d...... ",n);i<len;i++)
if(nums[i]==n) return i;
if(i==len) nums[len]=n;
return -1;
}
int checkNumPX(int nums[],int len,int n)
{
int bInx=0,eInx=len-1,mInx;
printf("对升序数组按二分法查找%d...... ",n);
while(eInx-bInx>1)//当序列区间元素大于2个时,取中间值
{
mInx=bInx+(eInx-bInx)/2;
if(nums[mInx]==n) return mInx;
if(n<nums[mInx]) eInx=mInx;//n比中间值小,取前半区间中间继续比较
if(n>nums[mInx]) bInx=mInx;//n比中间值大,取后半区间中间继续比较
}
if(nums[eInx]==n) return eInx;
if(nums[bInx]==n) return bInx;
if(n<nums[bInx]) move1(nums,len+1,bInx),nums[bInx]=n;
if(n>nums[bInx] && n<nums[eInx]) move1(nums,len+1,eInx),nums[eInx]=n;
if(n>nums[eInx]) move1(nums,len+1,eInx+1),nums[eInx+1]=n;
return -1;
}
void move1(int nums[],int len,int inx)
{
int i;
for(i=len-1;i>inx;nums[i]=nums[i-1],i--);
}
Ⅳ C语言编程题
#include<stdio.h>
#include<conio.h>
/*试除法判断素数*/
/*大于1的自然数num,若其不能被2~num^1/2(num的平方根)之间的任一自然数整除,则其为素数*/
/*num是素数返回1,否则返回0*/
intisPrime(intnum){
inti;
if(num<=1)/*素数必须是大于1的自然数*/
return0;
if(num%2==0&&num!=2)/*除2之外的偶数显然不是素数*/
return0;
for(i=2;i*i<=num;i++)
if(num%i==0)
return0;
return1;
}
/*验证哥德巴赫猜想*/
/*任一大于2的偶数,都可表示成两个素数之和*/
/*num=pm+pn*/
intgoldbach(intnum){
intm,n;
intcnt=0;/*哥德巴赫分拆数*/
if(num<2||num%2)
return-1;
/*将num拆分成m与n之和,并遍历其所有情况*/
for(m=2,n=num-2;m<=n;m++,n--){
if(isPrime(m)&&isPrime(n)){/*如果m与n均为素数*/
cnt++;
printf("%2d=%2d+%2d ",num,m,n);
}
}
returncnt;
}
intmain(void){
inti;
for(i=10;i<=20;i+=2)
goldbach(i);
getch();
return0;
}
如有问题,可以点击头像联系我
Ⅵ C语言编程题:
#include<stdio.h>
typedefstruct
{
intnum;
charname[15];
intg1;
intg2;
intg3;
}stu;
intmain()
{
//-----------变量区-----------
FILE*fp;
charstr[100];
charc;
inttj[3];//用于统计0为大写数1为小写数2为数字数
intnum;
stustdt[50];
intpstk=0;
for(num=0;num<3;num++)tj[num]=0;//初始化
//----------------第一问
fp=fopen("E:data.txt","w");
printf("输入一堆数据:");
scanf("%s",str);
getchar();
fprintf(fp,"%s",str);
fclose(fp);
//----------------第二问
fp=fopen("data2.txt","r");
if(fp&&!feof(fp))
{
c=fgetc(fp);
}
while(!feof(fp))
{
num=0;
while(c=='')
{
printf("%c",c);
c=fgetc(fp);
}
while(c>=48&&c<=57)
{
num++;
printf("%c",c);
if(!feof(fp))c=fgetc(fp);
elsebreak;
}
if(num)
{
tj[2]++;
continue;
}
if(c>=65&&c<=90)
{
printf("%c",c);
tj[0]++;
if(!feof(fp))c=fgetc(fp);
elsebreak;
continue;
}
if(c>=65&&c<=90)
{
printf("%c",c);
tj[0]++;
if(!feof(fp))c=fgetc(fp);
elsebreak;
continue;
}
if(c>=97&&c<=122)
{
printf("%c",c);
tj[1]++;
if(!feof(fp))c=fgetc(fp);
elsebreak;
continue;
}
}
printf(" 大写字母:%d个小写字母:%d个数字:%d个",tj[0],tj[1],tj[2]);
fclose(fp);
//---------------第三问
fp=fopen("E:chengji.txt","w");
while(1)
{
printf(" 输入学号名字三门成绩 ");
scanf("%d%s%d%d%d",&stdt[pstk].num,stdt[pstk].name,&stdt[pstk].g1,&stdt[pstk].g2,&stdt[pstk].g3);
getchar();
fprintf(fp,"%d%s%d%d%d ",stdt[pstk].num,stdt[pstk].name,stdt[pstk].g1,stdt[pstk].g2,stdt[pstk].g3);
pstk++;
printf("是否继续?y/n ");
scanf("%c",&num);
getchar();
if(num==110)break;
}
fclose(fp);
for(num=0;num<3;num++)tj[num]=0;//初始化
num=0;
while(num<pstk)
{
tj[0]+=stdt[num].g1;
tj[1]+=stdt[num].g2;
tj[2]+=stdt[num].g3;
num++;
}
printf("三门成绩平均分:%2.2f%2.2f%2.2f ",(float)tj[0]/(pstk),(float)tj[1]/(pstk),(float)tj[2]/(pstk));
system("pause");
//-------------------------------------------
}
Ⅶ c语言编程题
//1.输入一个字符串和整数n,将前n个字符复制到另一个字符串中并输出。
#include<stdio.h>
void
main()
{
char
a[50];
char
b[50];
printf("输入一个字符串:\n");
int
n;
gets(a);
printf("输入一个整数\n");
scanf("%d",&n);
int
i;
for(i=0;i<n;i++)
{
b[i]=a[i];
printf("%c",b[i]);
}
printf("\n");
}
Ⅷ 一个非常简单的C语言编程题目(车票售票系统),可加分
做这个要花制作人好几天的时间啊。我是会做,并且还可以根据需要美化界面等等,只是耗时间来做东西伤不起啊。
Ⅸ c语言编程题
#include <stdio.h>
#include <math.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x<=-2)
y=-pow(exp(1),2*x+1)+3;
else if(x<=3)
y=2*x-1;
else
y=2*log10(3*x+5)-11;
printf("%lf ",y);
return 0;
}
Ⅹ c语言编程题目及答案
#include <stdio.h>
#include <math.h>
void main(void)
{
double a;
double b;
double c;/* 以上三个变量分别对应三边 */
double sin_c;/* c边对应角的正玄值 */
double cos_c;/*c边对应角的余玄值*/
double cos_a;
double area; /* 三角形的面积 */
printf("输入a,b,c:");
scanf("%lf, %lf, %lf", &a, &b, &c);
if(((a+b)>c) && (a-b)<c)
{
printf("三边能够成三角形\n.");
cos_c = (a*a + b*b -c*c)/(2*a*b);
cos_a = (b*b + c*c - a*a)/(2*b*c);
if ((cos_c > 0) && (cos_a >0))
{
printf("三角形是锐角三角形。\n");
}
else if ((cos_c < 0) || (cos_a < 0))
{
printf("三角形是钝角三角形\n");
}
else
{
printf("三角形是直角三角形\n");
}
sin_c = sqrt(1- cos_c*cos_c);
area = a*b*sin_c/2;
printf("三角形的面积是%f.\n",area);
}
else
{
printf("三边不能构成三角形\n");
}
}