|
? ?
? 6-1?函數(shù)實現(xiàn)字符串逆序?(15?分) 本題要求實現(xiàn)一個字符串逆序的簡單函數(shù)。 函數(shù)接口定義: void f( char *p ); 函數(shù)f對p指向的字符串進行逆序操作。要求函數(shù)f中不能定義任何數(shù)組,不能調(diào)用任何字符串處理函數(shù)。 裁判測試程序樣例: #include <stdio.h>
#define MAXS 20
void f( char *p );
void ReadString( char *s ); /* 由裁判實現(xiàn),略去不表 */
int main()
{
char s[MAXS];
ReadString(s);
f(s);
printf("%s\n", s);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例: Hello World! 輸出樣例: !dlroW olleH 作者: 張泳 單位: 浙江大學(xué)城市學(xué)院 時間限制: 400 ms 內(nèi)存限制: 64 MB 代碼 void f(char *p)
{
int n=strlen(p);
int i;
char temp;
for(i=0;i<n/2;i )
{
temp=p[i];
p[i]=p[n-i-1];
p[n-i-1]=temp;
}
return ;
}
? 思路圖 ? ? 錯誤截圖
問題 無 結(jié)果截圖
? 6-3?字符串的連接?(15?分) 本題要求實現(xiàn)一個函數(shù),將兩個字符串連接起來。 函數(shù)接口定義: char *str_cat( char *s, char *t ); 函數(shù)str_cat應(yīng)將字符串t復(fù)制到字符串s的末端,并且返回字符串s的首地址。 裁判測試程序樣例: #include <stdio.h>
#include <string.h>
#define MAXS 10
char *str_cat( char *s, char *t );
int main()
{
char *p;
char str1[MAXS MAXS] = {'\0'}, str2[MAXS] = {'\0'};
scanf("%s%s", str1, str2);
p = str_cat(str1, str2);
printf("%s\n%s\n", p, str1);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例: abc def 輸出樣例: abcdef abcdef 代碼 char *str_cat(char *s,char *t)
{
return strcat(s,t);
}
? 思路圖 ? ? 問題 在輸出時,總是發(fā)現(xiàn)輸出語句中前一句總是出錯,而后一句是對的 解決方法,return s; 結(jié)果截圖 ? 7-1?輸出學(xué)生成績?(20?分) 本題要求編寫程序,根據(jù)輸入學(xué)生的成績,統(tǒng)計并輸出學(xué)生的平均成績、最高成績和最低成績。建議使用動態(tài)內(nèi)存分配來實現(xiàn)。 輸入格式: 輸入第一行首先給出一個正整數(shù)N,表示學(xué)生的個數(shù)。接下來一行給出N個學(xué)生的成績,數(shù)字間以空格分隔。 輸出格式: 按照以下格式輸出: average = 平均成績 max = 最高成績 min = 最低成績 結(jié)果均保留兩位小數(shù)。 輸入樣例: 3 85 90 95 輸出樣例: average = 90.00 max = 95.00 min = 85.00 代碼 #include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i,*p;
double max,min,average,sum=0;
scanf("%d",&n);
if ((p=(int * )calloc(n,sizeof(int))) == NULL){
printf ("Not able to allocate memory.\n");
exit(1);
}
for (i=0;i<n;i ){
scanf("%d",p i);
}
for (i=0;i<n;i ){
sum=sum *(p i);
}
printf("average = %.2f\n",sum/n);
max=*p;
min=*p;
for(i=1;i<n;i ){
if( max <*(p i)){
max = *(p i);
}
if(min >*(p i)){
min = *(p i);
}
}
printf ("max = %.2f\nmin = %.2f",max,min);
free(p);
return 0;
}
思路圖
錯誤截圖 ? ? ? 問題 輸出結(jié)果不對 結(jié)果截圖
7-4?字符串排序?(20?分) 本題要求編寫程序,讀入5個字符串,按由小到大的順序輸出。 輸入格式: 輸入為由空格分隔的5個非空字符串,每個字符串不包括空格、制表符、換行符等空白字符,長度小于80。 輸出格式: 按照以下格式輸出排序后的結(jié)果: After sorted: 每行一個字符串 輸入樣例: red yellow blue green white 輸出樣例: After sorted: blue green red white yellow 代碼 #include<stdio.h>
#include<string.h>
int main()
{
int i, j;
char a[5][80],b[80];
for(i = 0;i < 5;i )
{
scanf("%s", &a[i]);
}
for(i = 1;i < 5;i )
{
for(j = 0;j < 5-i;j )
{
if(strcmp(a[j],a[j 1])>0)
{
strcpy(b,a[j]);
strcpy(a[j],a[j 1]);
strcpy(a[j 1],b);
}
}
}
printf("After sorted:\n");
for(i = 0;i < 5;i )
{
printf("%s\n", a[i]);
}
return 0;
}
思路圖 ? ? 錯誤截圖 ? ? 問題 怎樣定義數(shù)組可以使程序運行成功 解決方法,定義二維數(shù)組 結(jié)果截圖
? ? 7-3?計算平均成績?(15?分) 給定N個學(xué)生的基本信息,包括學(xué)號(由5個數(shù)字組成的字符串)、姓名(長度小于10的不包含空白字符的非空字符串)和成績([0,100]區(qū)間內(nèi)的整數(shù)),要求計算他們的平均成績,并順序輸出平均線以下的學(xué)生名單。 輸入格式: 輸入在一行中給出正整數(shù)N(≤10)。隨后N行,每行給出一位學(xué)生的信息,格式為“學(xué)號 姓名 成績”,中間以空格分隔。 輸出格式: 首先在一行中輸出平均成績,保留2位小數(shù)。然后按照輸入順序,每行輸出一位平均線以下的學(xué)生的姓名和學(xué)號,間隔一個空格。 輸入樣例: 5 00001 zhang 70 00002 wang 80 00003 qian 90 10001 li 100 21987 chen 60 輸出樣例: 80.00 zhang 00001 chen 21987 代碼 #include<stdio.h>
struct student{
int num[100];
char name[100][100];
int mark[100];
};
int main (void)
{
int i,n;
struct student s1,min;
int sum=0;
double average;
scanf("%d",&n);
for(i=0;i<n;i ){
scanf("%d %s %d",&s1.num[i],&s1.name[i],&s1.mark[i]);
sum=sum s1.mark[i];
}
average=sum/n;
printf("%.2lf\n",average);
for(i=0;i<n;i ){
if(s1.mark[i]<average)
printf("%s d\n",s1.name[i],s1.num[i]);
}
return 0;
}
思路圖 ? ? 錯誤截圖 ? ? 問題 如何定義存儲名字的數(shù)組 解決方法,要定義二維數(shù)組,不然答案錯誤; 結(jié)果截圖
? ? 學(xué)習進度條
? ? ? 來源:http://www./content-4-167451.html |
|
|