目录
1.判断上三角矩阵![](https://img-blog.csdnimg.cn/0541287862834e8893d7f1650409932f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5qix6Iqx6aaZ6Zi_5Y2h5Li9,size_20,color_FFFFFF,t_70,g_se,x_16)
#include <stdio.h>
int main ()
{
int t,n,i,j,k;
int a[10][10];
scanf("%d",&t);
int count = 0;
int b[100] = {0};//记录判断记录
for(k = 0;k<t;k++)
{
scanf("%d",&n);
for(i = 0;i<n;i++)
{
for(j = 0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
//判断矩阵
for(i = 0;i<n;i++)
{
for(j = 0;j<n;j++)
{
if(i>j&&a[i][j]!=0)
{
count++;
}
}
}
if(count==0){
b[k] = 1;
}
else{
b[k] = 0;
}
count = 0;
}
for(k=0;k<t;k++)
{
if(b[k]==1){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}
2.求矩阵各行元素之和
#include <stdio.h>
int main ()
{
int m,n,a[8][8],k,sum=0;
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++)
{
for(int j = 0;j<n;j++)
scanf("%d",&a[i][j]);
}
for(int i = 0;i<m;i++)
{
sum = 0;
for(int j =0;j<n;j++)
sum +=a[i][j];
printf("%d\n",sum);
}
return 0;
}
3.交换最小值和最大值
#include <stdio.h>
int main()
{
int n,i,min,max,mi,ma,a[10];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
min=a[0];
max=a[0];//常规操作,把数组的第一个元素设成最大值和最小值
for(i=0;i<n;i++){//找出最大和最小值
if(a[i]>max){
max=a[i];
}
if(a[i]<min){
min=a[i];
}
}
int temp;//temp作为交换的桥梁
for(i=0;i<n;i++){
if(a[i]==max){
temp=a[n-1];
a[n-1]=max;
a[i]=temp;
}//交换最大值
}
for(i=0;i<n;i++){
if(min==a[i]){
temp=a[0];
a[0]=min;
a[i]=temp;
}//交换最小值
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
4. 求整数序列中出现次数最多的数
#include<stdio.h>
int main()
{
int N,i,j,k,max=0,a[1000],b[1000]={0};
scanf("%d",&N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
if(a[i]==a[j])
b[i]++;
if(b[i]>max)
{max=b[i];k=i;}
}
printf("%d %d",a[k],max);
return 0;
}
5.字符转换
#include <stdio.h>
int main()
{
int i,b=0;
char a[100];
gets(a);
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='9')
b = b*10+a[i]-'0';
}
printf("%d",b);
}
6. 删除重复字符
#include<stdio.h>
#include<string.h>
int main()
{
char a[81];
gets(a);
int i,j,l=strlen(a);
char t;
for(i=0;i<l-1;i++)
for(j=0;j<l-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<l;i++)
{
if(a[i]!=a[i+1]) printf("%c",a[i]);
}
return 0;
}
注意:for(i=0;i<l-1;i++),for(j=0;j<l-1;j++),for(i=0;i<l;i++)(遍历)
7.字符串字母大小写转换
#include <stdio.h>
#include <string.h>
int main()
{
char a[35];
gets(a);
int len = strlen(a);
a[len - 1] = '\0';
for (int i = 0; i < len - 1; i++)
{
if (a[i] >= 'a' && a[i] <= 'z')
a[i] -= 32;
else if (a[i] >= 'A' && a[i] <= 'Z')
a[i] += 32;
}
puts(a);
}
8. 找最长的字符串
#include <stdio.h>
#include <string.h>
int main()
{
int i,n,a=0,max=0,b=0;
scanf("%d",&n);
char s[n][80];
for(i=0;i<n;i++)
{
scanf("%s",&s[i]);
a = strlen(s[i]);
if(a>max)
{
max=a;
b=i;
}
}
printf("The longest is: %s",s[b]);
return 0;
}
注意:输入字符串scanf("%s",&s[i])
9.输出数组元素
#include <stdio.h>
int main()
{
int i;
int n;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
if(i%3==1)
printf("%d",a[i]-a[i-1]);
else
printf(" %d",a[i]-a[i-1]);
if(i%3==0)
printf("\n");
}
return 0;
}
*10.找出不是两个数组共有的元素
#include<stdio.h>
int main()
{
int a[20], b[20], c[20];
int m, n, i, j, k=0;
scanf("%d", &m);
for(i=0; i<m; i++)
scanf("%d", &a[i]);
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &b[i]);
for(i=0; i<m; i++){
for(j=0; j<n; j++){
if(a[i]==b[j])
break;
}
if(j>=n){
c[k]=a[i];
k++;
}
}
for(i=0; i<n; i++){
for(j=0; j<m; j++){
if(b[i]==a[j])
break;
}
if(j>=m){
c[k]=b[i];
k++;
}
}
printf("%d", c[0]);
for(i=1; i<k; i++){
for(j=0; j<i; j++){
if(c[i]==c[j])
break;
}
if(j>=i)
printf(" %d", c[i]);
}
return 0;
}
*11.统计一行文本的单词个数
#include<stdio.h>
int main()
{
char str[1001];
gets(str);
int count=0;
int i=0;
while(str[i]==' ') //跳过开头的空格
i++;
while(str[i]!='\0')
{
if(str[i]!=' ')
{
count++;
while(str[i]!=' ') //跳过一个单词的其他字符
{
if(str[i]=='\0') //这句很重要,漏掉后出现严重错误
break;
i++;
}
}
else
{
while(str[i]==' ' )
i++;
}
}
printf("%d\n",count);
}
*12冒泡法排序
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, k, n, m, x;
scanf("%d %d", &n, &m);
int *s = (int *)malloc (sizeof(int) * n); //动态分配数组大小
for(i = 0; i < n; i ++) {
scanf("%d", &s[i]);
}
for(i = 0; i < m; i ++) { //进行m趟排序
for(k = 0; k < n-i-1; k ++) {
//后面的序列是已排序的,所以每一趟减去相应的个数,即n-i-1
if(s[k] > s[k+1]) {
x = s[k];
s[k] = s[k+1];
s[k+1] = x;
}
}
}
for(i = 0; i < n-1; i ++) {
printf("%d ", s[i]);
}
printf("%d", s[i]);
return 0;
}
#include <stdio.h>
int main()
{
int a[100];
int i,j,t;
int N,K;
scanf("%d%d",&N,&K);
for(j=0; j<N; j++)
{
scanf("%d",&a[j]);
}
for(i=0; i<K; i++)
{
for(j=0; j<N-1; j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(j=0; j<N-1; j++)
{
printf("%d",a[j]);
printf(" ");
}
printf("%d",a[N-1]);
return 0;
}