一、實驗題目、設計思路、實現方法
1.實驗題目
11-4 判斷上三角矩陣
12-2 統計字符出現次數
13-3 在數組中查找指定元素
14-7 找最小的字符串
15-10 找最長的字符串
2.實驗設計思路,實現方法
11-4:上三角矩陣指主對角線以下的元素都為0的矩陣;主對角線為從矩陣的左上角至右下角的連線。本題要求編寫程序,判斷一個給定的方陣是 否上三角矩陣。
12-2:本題要求編寫程序,統計並輸出某給定字符在給定字符串中出現的次數。
13-3:本題要求實現一個在數組中查找指定元素的簡單函數。
函數接口定義:
int search( int list[], int n, int x );
其中list[]
是用戶傳入的數組;n
(≥0)是list[]
中元素的個數;x
是待查找的元素。如果找到
則函數search
返回相應元素的最小下標(下標從0開始),否則返回−1。
14-7:本題要求編寫程序,針對輸入的N個字符串,輸出其中最小的字符串。
15-10:本題要求編寫程序,針對輸入的N個字符串,輸出其中最長的字符串。
二,源程序
11-4 判斷上三角矩陣:
#include<stdio.h>
int main()
{
int t,j,n,k,i;
scanf("%d",&t);
int b[10]={0};
for(k=0;k<t;k++){
scanf("%d",&n);
int a[n][n];
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
if(a[i][j]!=0)
b[k]=1;
}
}
}for(i=0;i<t;i++){
if(b[i]!=1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
12-2 統計字符出現次數:
#include <stdio.h>
#include<stdio.h>
int main()
{
int b,s=0,i=0;
char a,x[80];
scanf("%s",&x);
while((x[i]=getchar())!='\n')
i++;
scanf("%c",&a);
x[i]='\0';
for(i=0;x[i]!='\0';i++)
if(x[i]>='A'&&x[i]<='Z'||x[i]>='a'&&x[i]<='z')
{
s=b;
s*=i;
}
printf("%d\n",s);
return 0;
}
13-3 在數組中查找指定元素:
#include <stdio.h>
#define MAXN 10
int search( int list[], int n, int x );
int main()
{
int i, index, n, x;
int a[MAXN];
scanf("%d", &n);
for( i = 0; i < n; i++ )
scanf("%d", &a[i]);
scanf("%d", &x);
index = search( a, n, x );
if( index != -1 )
printf("index = %d\n", index);
else
printf("Not found\n");
return 0;
}
int search( int list[], int n, int x )
{
int i;
for(i=0;i<n;i++)
{
if(list[i]==x)
return i;
}
return -1;
}
14-7 找最小的字符串:
#include<stdio.h>
#include<string.h>
int main()
{
int N,i,a;
char str[1000][1000];
char *c;
scanf("%d\n",&N);
for(i=0;i<N;i++)
gets(str[i]);
c=str[0];
for(i=1;i<N;i++){
if(strcmp(c,str[i])>0)
c=str[i];
}
printf("Min is: %s",c);
return 0;
}
15-10 找最長的字符串:
#include<stdio.h>
#include<string.h>
int main()
{
int N,i,j,k;
char str[10000][100];
int a,b;
scanf("%d",&N);
for(i=0;i<N;i++)
scanf("%s",str[i]);
a=strlen(str[0]);
b=0;
for(i=1;i<N;i++){
if(a<strlen(str[i])){
a=strlen(str[i]);
b=i;
}
}
printf("The longest is: %s",str[b]);
return 0;
}
三.遇到的問題及解決方法,心得體會
問題:編譯錯誤,部分正確,段錯誤,答案錯誤。
解決的方法:如出現編譯錯誤時,用DEV軟件來進行辯解差不多都是不是單詞寫錯就是多加或少加符號。一般情況下DEV可以全部的編譯錯誤都能查得到。部分正確是這道編譯題需要幾種功能,可你只滿足了其中的一些。所以得要寫其他的幾種功能的代碼,從而就得到正確的答案。答案錯誤是雖可以運行,但是得不到正確的答案。其原因可能是由於你所寫的一些數字或一語句用的不准確而所得到的。只要能夠把其中的一些錯誤的語句或數字找到之后把錯誤的調整過來就ok了。段錯誤不知道這個最難找的一個,到現在我幾乎沒有找對過一次。
心得體會:從一開始的瞎寫到現在稍微會寫那么一點,在這一學期收獲還不錯。C語言就稍微懂了那么一點點,最起碼最近還沒出現過編譯錯誤這一句。現在簡單的代碼還可以打得出來打的時候也沒那么麻煩,思路也比較清晰,但是一旦遇到稍微難一點就開始要蒙了什么都不會。從指針開始就蒙了更不用說文件了。