求二阶矩阵所有靠外侧的各元素之和
例矩阵为:
3,0,0,3
2,5,7,3
1,0,4,2
外侧和为18
#include <stdio.h>
add(int m,int n,int arr[]){
int i,j,sum=0;
for ( i = 0; i < m; i=i+m-1)
for(j=0;j<n;j++)
sum=sum+arr[i*n+j];
for(j=0;j<n;j=j+n-1)
for(i=1;i<m-1;i++)
sum=sum+arr[i*n+j];
return(sum);
}
int main(){
int a[3][4]={3,0,0,3,2,5,7,3,1,0,4,2},s;
s=add(3,4,a[0]);
printf("s=%d\n",s); //输出结果
return 0;
}
找出大于输入整数且紧随这个整数的素数并作为函数返回
#include<stdio.h>
int main()
{
int f(int s);
int s; //定义一个整数S。
printf("请输入一个整数:\n");
scanf_s("%d", &s); //将接收的数据赋值给S
printf("紧随整数%d的素数为:%d", s,f(s));
}
int f(int s)
{
int i, j, k;
for (i = s + 1;; i++) { //从定义的整数向后依次加
for (j = 2; j < i; j++) //依次循环被除数
if (i % j == 0)break; //如果i取余j==0,退出本轮循环
if (i == j)return i; //如果i=j返回i
}
}
#include "stdio.h"
int fun(int x){
int i; //定义整型变量i
while(1){ //while循环
x++; //输入整数自增
for(i=2;i<x;i++){ //循环被除数
if(x%2 ==0) break; //如果x%2=0,结束循环
}
if(i==x) return x; //如果i=x 返回整数x
}
}
void main(){
int x,i; //定义整型变量下x,i
scanf("%d",&x); //接收输入整数赋值给x
printf("%d",fun(x)); //输出结果
}
输入多个字符串,输出最短字符串
#include "stdio.h"
#include "string.h"
void main(){
char a[10][100]; //定义一个字符串型二维数组
int n[10]={0},t,j,i; //定义整型变量t,j,i;定义整型一维数组
for(i=0;i<10;i++){ //for循环到9停止
gets(a[i]); //接收字符串放到二维数组a[][]中
n[i]=strlen(a[i]); //计算数组a中的字符串长度并赋值给数组n
}
t=0; //将0赋值给整型变量t
for(j=1;j<10;j++){ //for循环到9停止
if(n[j]<n[t]) //比较数组中值的大小
t = j; //将j的值赋值给t
}
printf("%s",a[t]); //输出数组中a的第t行字符串
}
根据以下公式求∏的近似值,要求累加到某项小于1e-6
时位置
$$\dfrac{Π}{2}=1+\dfrac{1}{3}+\dfrac{1×2}{3×5}+\dfrac{1×2×3}{3×5×7}+\dfrac{1×2×3×4}{3×5×7×9}+…+\dfrac{1×2×…×n}{3×5×…×(2n+1)}$$
#include <stdio.h>
void main(){
float i,j,k,n,m,pi;
n=1.0; //分子
m=1.0; //分母
i=0; //分子步长
j=1.0; //分母步长
pi=1.0;
while ((n/m)>=1e-6){
i=i+1;
n=n*i;
j=j+2;
m=m*j;
pi+=(n/m);
}
printf("%f",2*pi);
}
#include "stdio.h"
#include "math.h"
void main() {
double fz = 1, fm = 3, s = 1, i = 1;
while (fabs(fz / fm) >= 1e-6) {
s += (fz / fm);
fz *= (++i);
fm *= 2 * i + 1;
}
printf("%f", s * 2);
}
百马百石问题:有100匹马驮100担货。大马驮三担,中马驮两担,两匹小马驮一担问大中小马各多少匹?
#include <stdio.h>
int main(){
int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+=1)
for(hm=0;hm<=100-hb;hm+=1){
hl=100-hb-hm;
if(hb*6+hm*4+hl==200){
n++;
printf("hb=%d\thm=%d\thl=%d\n",hb,hm,hl);
}
}
printf("n=%d\n",n);
return 0;
}
打鱼晒网问题:假设从某天开始“三天打鱼两天晒网”,问这个人第N天是打鱼还是晒网?
swich语句
#include <stdio.h>
int main()
{
int i;
scanf("%d",&i);
switch (i%5)
{
case 1:
case 2:
case 3:printf("打鱼"); break;
default:printf("晒网"); break;
}
}
if语句
#include "stdio.h"
int main()
{
int day;
scanf("%d",&day);
int left;
left=day%5;
if(left==0||left==4)
{
printf("晒网 %d",day);
}
else
{
printf("打鱼 %d",day);
}
}
输入十个数据去掉最高分去掉最低分求平均值
#include "stdio.h"
// 主函数
int main()
{
int score[10],max,min,sum;//定义int型数组score,定义int型变量min,max,sum
float aver; //定义float型变量aver
input(score,10); //录入十个数据
sum=ssum(score,10); //求和
max=smax(score,10); //求最大值
min=smin(score,10); //求最小值
aver=(sum-max-min)*1.0/8; //求平均值
printf("%f",aver); //打印平均值
}
//录入十个数据
int input(int a[],int i){
int j;
for(j=0;j<10;j++){
printf("请输入第%d个评分",j+1);
scanf("%d",&a[j]);
}
}
//求和
int ssum(int a[],int i){
int sum=0,j;
for(j=0;j<i;j++){
sum+=a[j];
}
return sum;
}
//求最大值
int smax(int a[],int i){
int j,max=a[0];
for(j=1;j<i;j++){
if(max<a[j])
max =a[j];
}
return max;
}
//求最小值
int smin(int a[],int i){
int j,min=a[0];
for(j=1;j<10;j++){
if(min>a[j])
min=a[j];
}
return min;
}
编写函数:删去一堆数组中所有重复的数只保留不同的数,输出主函数原来元素和删除后的元素,数据已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例一堆数据中的数据是:2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10
删除后数组中内容为:2 3 4 5 6 7 8 9 10
比较数组a和b,如果b数组没有这个数,则将这个数放入数组b
#include "stdio.h"
void main()
{
int a[19]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10};
int b[19];
int i,j=0,k;
for(i=0;i<=18;i++){
for(k=0;k<j;k++){
if(a[i] == b[k]) break;
}
if(k==j) b[j++] = a[i];
c
}
for(k=0;k<j;k++){
printf("%d ",b[k]);
}
}
遍历数组,如果相同则数据前移一位
#include "stdio.h"
void main()
{
int a[19]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10};
int i,j,n=19,x;
for(i=0;i<n;i++){ //循环判断数组中每一个数
for(j=i+1;j<n;j++){ //判断a[i]后边的数是否和a[i]相等
if(a[i]==a[j]){
for(x=j;x<n-1;x++) //将a[j]后面的元素全往前移一个位置
a[x]=a[x+1];
j--; //a[j+1]取代a[j]位置,为使下次从a[j+1]开始查找,j减一(为使j保持不变)
n--; //数组长度减一
}
}
}
printf("剩余元素个数%d\n",n);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
}
数字组合:有1,2,3,4,四个数字,能组成多少互不相同且不重复的三位数
#include <stdio.h>
main(){
int i,j,k,n=0;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
for(k=1;k<=4;k++)
if(i!=j && i!=k && k!=j){
printf("%d%d%d \t",i,j,k); //打印能组成的所有组合
n++;
}
printf("\n能组成%d种互不相同且不重复的数字",n); //打印结果
}
求三行三列矩阵a\[3\]\[2\]=\{1,2,3,4,5,6,7,8,9}
,非对角线之和
#include <stdio.h>
main(){
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,sum=0;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i!=j && i+j!=2)
sum=sum+a[i][j];
}
}
printf("sum=%d\t",sum);
}
学生成绩分布:读入n个学生成绩进行统计,大于90得A,大于80小于90得B,大于70小于80得C,大于60小于70得D,小于60得E。
#include <stdio.h>
main(){
int n,i,j,k;
int a=0,b=0,c=0,d=0,e=0;
printf("请输入学生人数");
scanf("%d",&n);
if(n>100)
printf("请输入小于100的数字");
else{
for(i=0;i<n;i++){
printf("请输入第%d个学生分数",i+1);
scanf("%d",&j);
if(j>=90){
a++;
}else if(j<90 && j>=80){
b++;
}else if(j<80 && j>=70){
}else if(j<70 && j>=60){
d++;
}else e++;
}
printf("成绩在A的学生有%d人\t",a);
printf("成绩在B的学生有%d人\t",b);
printf("成绩在C的学生有%d人\t",c);
printf("成绩在D的学生有%d人\t",d);
printf("成绩在E的学生有%d人",e);
}
}
输入10个整数存入数组a,在输入一个整数x,在数组中查找x,找到x则输出x在10个数中的序号,找不到输出“no found”
#include <stdio.h>
main(){
int a[10];
int i,k,l=0;
for(i=0;i<10;i++){
printf("请输入第%d个整数",i+1);
scanf("%d",&a[i]);
}
printf("请输入一个数判断是否在数组中:");
scanf("%d",&k);
for(i=0;i<10;i++){
if(k==a[i]){
l=i+1;
}
}
if(l>0) printf("这是第%d个数",l);
else printf("no found");
}
int Search(int a[],int n, int x);
int Search(int a[],int n, int x){
int i,j;
for(i=0;i<n;i++){
if(a[i]==x) return i;
}
return -1;
}
int main(){
int i,n,a[10];
printf("Input 10 numbers: n");
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
printf("Input x:\n");
scanf("%d",&n);
i=Search(a,10,n);
if(i==-1) printf("Not found!\n");
else printf("下标是 %d\n",i);
}
程序功能:从键盘上输入两个学生的四门成绩,求每个学生的平均成绩,并统计不及格数
#include <stdio.h>
main(){
int i,j,k,n,sum1=0;
float l;
for(j=1;j<=2;j++){
sum1=0;
n=0;
for ( i = 1; i <= 4; i++){
printf("请输入第%d学生第%d个成绩",j,i);
scanf("%d",&k);
sum1=sum1+k;
if(k<60){
n++;
}
}
l=sum1/4.00;
printf("第%d个学生平均成绩为%.2f,不及格门数:%d\n",j,l,n);
}
}
GitHub Discussions