当前位置:首页 » 编程语言 » c语言每日编程题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言每日编程题

发布时间: 2022-06-18 19:45:42

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");
}
}