當前位置:首頁 » 編程語言 » 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");
}
}