西工大noj---软院2020级C语言练习1

  1. 输入一个1000的正整数n,求1到n的平方和(行尾带回车)
#include<stdio.h>
int main(){
    int n,sum,i;
    sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        sum=sum+i*i;
    }
    printf("%d\n",sum);
}
  1. 叙古拉斯猜想:对于每一个大于1的数,如果是奇数,将其乘3加1,如果是偶数,将其除以2,最终得到1
#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    printf("%d\n");
    while(n!=1){
        if(n%2!=0){
            n=n*3+1;
        }
        else{
            n=n/2;
        }
        printf("%d\n",n);
    }
}
  1. 输出100以内约数个个数为4的数
#include<stdio.h>
#include<math.h>

int getYueNum(int n){
    int i,sum;
    sum=0;
    for(i=1;i*i<n;i++){
        if(n%i==0)
            sum+=2;
    }
    if(i*i==n)
        sum++;
    return sum;
}
int main(){
    int i;
    i=10;
    while(i<100){
        if(getYueNum(i)==4)
            printf("%d\n",i);
        i++;
    }
}
  1. 输入n,从小到大输出具有n个约数的所有两位数,每个数占一行
#include<stdio.h>

int getYueNum(int n){
    int i,sum;
    sum=0;
    for(i=1;i*i<n;i++){
        if(n%i==0)
            sum+=2;


    }
    if(i*i==n)
        sum++;
    return sum;
}
int main(){
    int i,n;
    i=10;
    scanf("%d",&n);
    while(i<100){
        if(getYueNum(i)==n)
            printf("%d\n",i);
        i++;
    }
}
  1. 韩信带了一些士兵(人数小于等于105),他想知道士兵的人数,先让士兵3人站一排,最后余两人;5人站一排,最后余1人,7人站一排,最后余4人,问有多少士兵
#include<stdio.h>
int main(){
    int i;
    for(i=1;i<105;i++){
        if((i%3==2)&&(i%5==1)&&(i%7==4))
            printf("%d\n",i);
        else{
            continue;
        }

    }
}
  1. 韩信带了一些士兵(人数小于等于105),他想知道士兵的人数,先让士兵3人站一排,最后余a人;5人站一排,最后余b人,7人站一排,最后余c人,问有多少士兵
    输入三个非负整数a,b,c,其中a小于3,b小于5,c小于7
    输出士兵的人数
#include<stdio.h>
int main(){
    int a,b,c,i;
    scanf("%d %d %d",&a,&b,&c);
    for(i=1;i<105;i++){
        if((i%3==a)&&(i%5==b)&&(i%7==c))
            printf("%d\n",i);
        else{
            continue;
        }
    }
}
  1. 袋子里有若干个球,佳佳每次拿出其中的一半再放回去一个球,一共这样做了5次,袋子里还有3个球,问原来袋子中有多少个球?
#include<stdio.h>
int main(){
    int i;
    int n=3;
    for(i=0;i<5;i++){
        n=(n-1)*2;
    }
    printf("%d",n);
}
  1. 袋子里有若干个球的问题,聪明的佳佳很快就算出来了,但是他想写一个程序解决这个问题,并想把问题扩展到一般情况:每次拿出其中的一半再放回去一个球,一共这样做了n次,袋子里还有m个球。问原来袋子中有多少个球?
    输入:输入两个正整数n和m,
    输出:袋子里原来有多少个球
#include<stdio.h>
int main(){
    int i,m,n;
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++){
        m=(m-1)*2;
    }
    printf("%d\n",m);
}
  1. 先输入一个正整数n,再输入n个整数,求它们的和。
#include<stdio.h>
int main(){
    int n,sum,i;
    int a[20];
    sum=0;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
        sum=sum+a[i];
    }
    printf("%d\n",sum);
}
  1. 先输入一个正整数n,然后输入n个整数,输出其最小值。
#include<stdio.h>

int main(){
    int a[20];
    int n,i,minnum;
    scanf("%d",&n);
    scanf("%d",&a[0]);
    minnum=a[0];
    for(i=1;i<n;i++){
        scanf("%d",&a[i]);
        if(a[i]<minnum)
            minnum=a[i];
    }
    printf("%d\n",minnum);
}
  1. 输入一个正整数,将其各个位上的数字按从低位到高位的顺序单独输出,每个数字占一行。提示可用两种除法/和%,用于整数时第一种除法的结果是商的整数部分,第二种除法的结果是余数,例如:123/10=12,123%10=3)
    输入:一个正整数。
    输出:将其各个位上的数字按从低位到高位的顺序单独输出,每个数字占一行。
#include<stdio.h>
int main(){
    int n,i,j;
    int a[10];
    i=0;
    scanf("%d",&n);
    while(n){
        a[i]=n%10;
        n=n/10;
        i++;
    }
    for(j=0;j<i;j++){
        printf("%d\n",a[j]);
    }
    return 0;
}
  1. 完全背包问题
#include<stdio.h>

int w[1001],v[1001];
int dp[1001][1001];
int main(){
    int n,c,i,j,k;
    scanf("%d %d",&n,&c);
    for(i=1;i<=n;i++){
        scanf("%d",&w[i]);//n种物品的重量
    }
    for(i=1;i<=n;i++){
        scanf("%d",&v[i]);//n种物品的价值
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=c;j++){
            for(k=0;k*w[i]<=j;k++){
                if(dp[i][j]<dp[i-1][j-k*w[i]]+k*v[i])
                    dp[i][j]=dp[i-1][j-k*w[i]]+k*v[i];
            }
        }
    }
    printf("%d\n",dp[n][c]);

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
西北工业大学NOJC程序设计习题答案(非本人制作,侵删) 1.“1“的传奇 2.A+B 3.A+BⅡ 4.AB 5.ACKERMAN 6.Arithmetic Progressions 7.Bee 8.Checksum algorithm 9.Coin Test 10.Dexter need help 11.Double 12.Easy problem 13.Favorite number 14.Graveyard 15.Hailstone 16.Hanoi Ⅱ 17.Houseboat 18.Music Composer 19.Redistribute wealth 20.Road trip 21.Scoring 22.Specialized Numbers 23.Sticks 24.Sum of Consecutive 25.Symmetric Sort 26.The Clock 27.The Ratio of gainers to losers 28.VOL大学乒乓球比赛 29.毕业设计论文打印 30.边沿与内芯的差 31.不会吧,又是A+B 32.不屈的小蜗 33.操场训练 34.插入链表节点 35.插入排序 36.插入字符 37.成绩表计算 38.成绩转换 39.出租车费 40.除法 41.创建与遍历职工链表 42.大乘法 43.大除法 44.大加法 45.单词频次 46.迭代根 47.多项式的猜想 48.二分查找 49.二分根 50.发工资的日子 51.方差 52.分离单词 53.分拆分 54.分化小 55.分加减法 56.复 57.高低交换 58.公园喷水器 59.韩信点兵 60.行程编码压缩算法 61.合并字符串 62.猴子分桃 63.火车站 64.获取指定二进制位 65.积分计算 66.和 67.计算A+B 68.计算PI 69.计算π 70.计算成绩 71.计算完全 72.检测位图长宽 73.检查图像文件格式 74.奖金发放 75.阶乘合计 76.解不等式 77.精确幂乘 78.恐怖水母 79.快速排序 80.粒子裂变 81.链表动态增长或缩短 82.链表节点删除 83.两个整之间所有的素 84.路痴 85.冒泡排序 86.你会存钱吗 87.逆序整 88.排列 89.排列分析 90.平均值函 91.奇特的分列 92.建筑高度 93.区间内素 94.三点顺序 95.山迪的麻烦 96.删除字符 97.是该年的第几天 98.是该年的第几天? 99.据加密 100.搜索字符 101.所有素 102.探索合世纪 103.特殊要的字符串 104.特殊整 105.完全 106.王的对抗 107.危险的组合 108.文件比较 109.文章统计 110.五猴分桃 111.小型据库 112.幸运儿 113.幸运字”7“ 114.选择排序 115.寻找规律 116.循环移位 117.延伸的卡片 118.羊羊聚会 119.一维组”赋值“ 120.一维组”加法“ 121.勇闯天涯 122.右上角 123.右下角 124.圆及圆球等的相关计算 125.圆及圆球等相关计算 126.程序员添加行号 127.找出字 128.找幸运 129.找最大 130.整 131.重组字符串 132.子序列的和 133.子字符串替换 134.自然立方的乐趣 135.字符串比较 136.字符串复制 137.字符串加密编码 138.字符串逆序 139.字符串排序 140.字符串替换 141.字符串左右 142.组合 143.最次方 144.最大乘积 145.最大整 146.最小整 147.最长回文子串 148.左上角 149.左下角
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值