第十二堂課後作業

作業1:
通過輸入兩個加數,給學生出一道加法運算題。如果輸入答案正確,則顯示“Y”;否則顯示“N”。
要求:程序循環執行n次,用函數實現判斷對錯和輸出結果
輸入輸出示例:(括號內部分是對輸入輸出的解釋,不要出現在程序中)
示例一: 
   1,2(輸入)
   1+2=4(1+2=由程序輸出,4由鍵盤輸入)
   N. (由程序輸出)
示例二:
   1,2(輸入)
   1+2=3(1+2=由程序輸出,3由鍵盤輸入)

   Y(由程序輸出).


程序:

  #include<stdio.h>  
    void add(int x,int y,int z)  
    {  
		if(x+y==z)  
                printf("Y\n");  
            else  
                printf("N\n");  
    }  
    void main()  
    {  
        while(1)  
        {  
            int a,b,c;  
            printf("請輸入兩個數字:\n");  
            scanf("%d%d",&a,&b);  
            printf("%d+%d=",a,b);  
            scanf("%d",&c);  
            add(a,b,c);  
        }  
    }  

截圖:


作業2、統計和分析某班學生考試成績,實現如下學生成績管理功能:
(1)錄入每個學生的學號和考試成績;
(2)計算課程的平均分;
(3)按成績由高到低排出名次表;
(4)按學號查詢學生排名及其考試成績;
(5)按優秀(90~100)、不及格(0~59)2個類別,統計每個類別的人數及其所佔的百分比;
要求:最多不超過40人(具體人數由鍵盤輸入)參加某門課程的考試,用一維數組作函數參數編程


#include<stdio.h>
#define N 41 
int main() 
{ 
	int n;
	long number[N]; 
	float score[N];
	void input(long number[],float score[],int n); 
	void ave(float score[],int n);
	void list(long number[],float score[],int n); 
	void search(long number[],float score[],int n); 
	void rate(float score[],int n); 
	printf("輸入學生人數:\n"); 
	scanf("%d",&n); 
	input(number,score,n); 
	ave(score,n);
	list(number,score,n);  
	search(number,score,n); 
	rate(score,n); 
	return 0;
}
void input(long number[],float score[],int n) 
{ 
	int i; 
	printf("請輸入位學號和學分:\n");
	for(i=0;i<n;i++) 
	{  
		scanf("%ld,%f",&number[i],&score[i]); 
	} 
}
void ave(float score[],int n) 
{ 
	int i; 
	float sum=0; 
	for(i=0;i<n;i++) 
	{
		sum=sum+score[i]; 
	} 
	printf("平均分是:%.1f\n",sum/n); 
}
void list(long number[],float score[],int n) 
{ 
	int i,j; 
	float temp; 
	long m; 
	printf("成績名次表:\n");
	for(i=1;i<n;i++) 
		for(j=0;j<n-i;j++) 
			if(number[j]>number[j+1]) 
			{ 
				m=number[j]; 
				temp=score[j];
				number[j]=number[j+1];
				score[j]=score[j+1]; 
				number[j+1]=m; 
				score[j+1]=temp; 
			} 
	for(i=0;i<n;i++) 
		printf("%ld,  %.0f\n",number[i],score[i]); 
}
void search(long number[],float score[],int n) 
{ 
	int i,j,ln=0;
	float temp; 
	long m,sn;
	for(i=1;i<n;i++) 
		for(j=0;j<n-i;j++)
			if(score[j]<score[j+1]) 
			{
				temp=score[j]; 
				m=number[j];
				score[j]=score[j+1]; 
				number[j]=number[j+1]; 
				score[j+1]=temp; 
				number[j+1]=m; 
			} 
	printf("請輸入您想查詢學生學號:\n");
	scanf("%ld",&sn); 
	for(i=0;i<n;i++)
	{	++ln;
		if(number[i]==sn)
			printf("學號 %ld 名次 %d,其考試成績   %.0f\n",sn,ln,score[i]);  
	}
}
void rate(float score[],int n) 
{ 
	int a=0,b=0,c=0,d=0,e=0,i; 
	float r1,r2;
	for(i=0;i<n;i++) 
	{ 
		switch((int)score[i]/10) 
		{ 
			case 10: 
			case 9:a=a+1;break; 
			case 8:b=b+1;break; 
			case 7:c=c+1;break; 
			case 6:d=d+1;break; 
			default:e=e+1; 
		} 
	} 
	r1=(100*a*1.0)/n;
	r2=(100*e*1.0)/n;
	printf("優秀            不及格\n");
	printf("%d               %d\n",a,e); 
	printf("%.2f%%          %.2f%%\n",r1,r2);
}




-----------------------分割線-----------------------

作業3:用指針(間接引用)求出兩個數中的最大數.

我的程序:

#include<stdio.h>  
  void main()
  {
	  int x,y,max,*p1,*p2;
	  p1=&x;
	  p2=&y;
	  scanf_s("%d%d",p1,p2);
	  if(*p1>*p2)
		  max=*p1;
	  else
		  max=*p2;
	  printf("max=%d\n",max);
  }

截圖:


-----------------------分割線-----------------------

作業4:編寫交換兩個變量值的函數,並交換主函數中兩個變量的值(不能使用全局變量傳遞數據).

程序:


#include<stdio.h>  
  void swap(int *p1,int *p2)
  {
	  int t;
	  t=*p1;
	  *p1=*p2;
	  *p2=t;
  }
void main()
{
	int a,b;
	scanf_s("%d%d",&a,&b);
	swap(&a,&b);
	  printf("a=%d,b=%d\n",a,b);
  }


-----------------------分割線-----------------------
作業5:從鍵盤輸入5個整數存入一維數組中,再按反序輸出(要求用指針訪問數組元素).

#include<stdio.h>  
  
void main()
{
	int x[5],i;
	for(i=0;i<=4;i++)
		scanf_s("%d",x+i);
	for(i=4;i>=0;i--)
	  printf("%d",*(x+i));
  }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章