王道C语言督学营oj练习

初级阶段

1. 课时2作业1

#include <stdio.h>
int main() {

    printf("hello, wangdao\n");
    return 0;
}

2. 课时2作业2

#include <stdio.h>
int main() {

//    int a, b;
//    printf("请输入两个数字,请用空格隔开:\n");
//    scanf("%d%d", &a, &b);
//    printf("两数之和%d:", a+b);
    int a, b;
    scanf("%d%d", &a, &b);
    printf("%d\n", a+b);

    return 0;
}

3. 课时2作业3

#include <stdio.h>

int main() {

    int i;
    scanf("%d", &i);
    if (i<= 122 && i>=65)
        printf("%c", i);
    else
        printf("The wrong range of numbers was entered!!!");
    return 0;

}

4. 课时3作业1

#include <stdio.h>

int main() {

    int year;
    scanf("%d", &year);
    if(year%4==0&&year%100!=0 || year%400==0){
        printf("yes\n");
    } else{
        printf("no\n");
    }
    return 0;
}

5. 课时3作业2

#include <stdio.h>

int main(){
    int i;
    char j;
    float k;
    scanf("%d %c%f",&i,&j,&k);
    printf("%0.2f", i+k+j);
    return 0;

}

6. 课时4作业1

#include <stdio.h>

int main(){
    int num, originalNum, reverseNum = 0;
    scanf("%d", &num);
    originalNum = num;
    while (num){
        reverseNum = reverseNum*10 + num%10; // 取余->取单个数
        num = num/10;
        // 例如 输入45, 第一次循环得到5赋值给reverseNum,num变成4; 第二次循环50 + 4, 转置成功
    }
    reverseNum == originalNum? printf("yes\n"): printf("no\n");
    return 0;
}

7. 课时4作业2

#include <stdio.h>

int main(){
    int n;
    scanf("%d", &n);
    int i, result = 1;
    for(i=1; i >= 1 && i <= n; i++){
        result = result*i;
    }
    printf("%d", result);
    return 0;
}

8. 课时5作业1

#include <stdio.h>

int main(){

    int n[100], count = 0, element_count, i;

    scanf("%d", &element_count);
    for (i = 0; i < element_count; ++i)
        scanf("%d", &n[i]);

    while (i>=0)
        if(n[i--] == 2)
            count++;
    printf("%d", count);

    return 0;
}

9. 课时5作业2

#include <stdio.h>
#include <string.h>

int main(){

    char c[100];
    char d[100] = {0}; // 初始化的目的是为了d有结束符

    gets(c);
    int i, j;
    for(i = 0, j = strlen(c)-1; i < strlen(c); i++, j--)
        d[j] = c[i];

    int result = strcmp(c, d);
    if (result < 0){
        printf("%d\n",-1);
    }
    else if (result > 0)
    {
        printf("%d\n", 1);
    }
    else {
        printf("%d\n", 0);
    }

    return 0;
}

10. 课时6作业1

#include <stdio.h>

void change(int *pInt);

int main(){
    int i;
    scanf("%d", &i);
    change(&i);
    printf("%d", i);
    return 0;
}

void change(int *pInt){
    *pInt /=2;
}

11. 课时6作业2

#include <stdio.h>
#include <stdlib.h>

int main(){

    int n;
    scanf("%d", &n);

    char c;
    scanf("%c", &c); // 消除标准输入缓冲区中的\n

    char *p;
    p = (char*)malloc(n); // 强制类型转换为char*
    fgets(p, n, stdin); // 不用gets原因是不安全,会访问越界
    puts(p);
    return 0;
}

12. 课时7作业

#include <stdio.h>

int step(int n) {
	
	if (n == 1)
		return 1;
	if (n == 2)
		return 2;

	return step(n - 1) + step(n - 2);
}

int main() {

	int n;
	scanf("%d", &n);

	printf("%d", step(n));

	return 0;
}

13. 课时8作业1

14. 课时8作业2

#include <stdio.h>
#include <stdlib.h>

// 当子函数要修改主函数中的p,那么就加引用。 引用如何实现的,完全不需要去关心
void modify_pointer(char* &p) {
	p = (char*)malloc(100);  // 申请100个字节大小的空间
	fgets(p, 100, stdin); // stdin代表标准输入,fgets是安全的, gets(p)是会访问越界的
}

int main() {

	char* p = NULL;
	modify_pointer(p);
	puts(p);
	free(p); // 申请的空间不适用后,记得free,避免扣分
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值