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