【C/PTA】指针专项练习(二)

这篇具有很好参考价值的文章主要介绍了【C/PTA】指针专项练习(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文结合PTA专项练习带领读者掌握指针,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。

6-1 鸡兔同笼问题

《孙子算经》记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
函数原型

int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);

说明:head 和 foot 为头和脚的数量,chicken 和 rabbit 为指示鸡和兔数量的指针。若问题有解,则将鸡和兔的数量保存到 chicken 和 rabbit 所指示的变量中,函数值为 1(真);否则不改变 chicken 和 rabbit 所指示的变量,函数值为 0(假)。
裁判程序

#include <stdio.h>


int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);


int main()

{

    int h, f, c, r;

    scanf("%d%d", &h, &f);

    if (ChickenRabbit(&c, &r, h, f))

    {

        printf("%d %d\n", c, r);

    }

    else

    {

        puts("None");

    }

    return 0;

}


/* 你的提交代码将被嵌在这里 */

输入样例1

35 94

输出样例1

23 12

输入样例2

30 71

输出样例2

None

int ChickenRabbit(int *chicken, int *rabbit, int head, int foot)
{
	for(int i=0;i<=head;i++)
	{
		int j=head-i;
		if(i*2+j*4==foot)
		{
			*chicken=i;
			*rabbit=j;
			return 1;
		}
	}
	return 0;
}//简单判断即可

6-2 冒泡排序

输入n(1<=n<=10)个整数,将它们从小到大排序后输出,要求编写函数bubble()实现冒泡排序算法。
函数接口定义:

void bubble (int a[ ], int n);

其中 a为数组,n为数据个数。
裁判测试程序样例:

#include <stdio.h>

void bubble (int a[ ], int n);

int main(void)

{    

  int n, a[10];

    int i;

    scanf("%d", &n);

    for (i=0; i<n;i++)

        scanf("%d",&a[i]);

    bubble(a,n);

    for (i=0; i<n; i++)

        printf("%d ",a[i]);

  printf("\n");

    return 0;

}


/* 请在这里填写答案 */

输入样例:

8
7 3 66 3 -5 22 -77 2

输出样例:

-77 -5 2 3 3 7 22 66

void bubble (int a[ ], int n)
{
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                int t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }
        }
    }
}

6-3 字符串反正序连接

先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
函数接口定义:

void fun (char *s, char *t);

其中s和 t 都是用户传入的参数。函数先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。

裁判测试程序样例:

#include <stdio.h>

void fun (char *s, char *t);

int main()

{ char s[100], t[100];

scanf("%s", s);

fun(s, t);

printf("%s\n", t);

return 0;

}


/* 请在这里填写答案 */

输入样例:

abcd

输出样例:

dcbaabcd

void fun (char *s, char *t)
{
    int j=0;
    //计算长度
    int l=0;
    while(s[l]!='\0')
    l++;
    
    for(int i=l-1;i>=0;i--)
    {
        t[j]=s[i];
        j++;
    }
    
    int p=j;
    for(int i=0;i<l;i++)
    {
        t[p]=s[i];
        p++;
    }
    t[p]='\0';
}

6-4 计算最长的字符串长度

本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。
函数接口定义:

int max_len( char *s[], int n );

其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。
裁判测试程序样例:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>


#define MAXN 10

#define MAXS 20


int max_len( char *s[], int n );


int main()

{

    int i, n;

    char *string[MAXN] = {NULL};

    

    scanf("%d", &n);

    for(i = 0; i < n; i++) {

        string[i] = (char *)malloc(sizeof(char)*MAXS);

        scanf("%s", string[i]);

    }

    printf("%d\n", max_len(string, n));


    return 0;

}


/* 你的代码将被嵌在这里 */

输入样例:

4
blue
yellow
red
green

输出样例:

6

6-5 查找星期

本题要求实现函数,可以根据下表查找到星期,返回对应的序号。
序号 星期
0 Sunday
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
函数接口定义:

int getindex( char *s );

函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。
裁判测试程序样例:

#include <stdio.h>

#include <string.h>


#define MAXS 80


int getindex( char *s );


int main()

{

    int n;

    char s[MAXS];

    

    scanf("%s", s);

    n = getindex(s);

    if ( n==-1 ) printf("wrong input!\n");

    else printf("%d\n", n);


    return 0;

}


/* 你的代码将被嵌在这里 */

输入样例1:

Tuesday

输出样例1:

2

输入样例2:

today

输出样例2:

wrong input!

int getindex( char *s )
{
    if(strcmp(s,"Sunday")==0)
        return 0;
    if(strcmp(s,"Monday")==0)
        return 1;
    if(strcmp(s,"Tuesday")==0)
        return 2;
    if(strcmp(s,"Wednesday")==0)
        return 3;    
    if(strcmp(s,"Thursday")==0)
        return 4;    
    if(strcmp(s,"Friday")==0)
        return 5;    
    if(strcmp(s,"Saturday")==0)
        return 6;

    return -1;
}

7-1 C程序设计 实验5-7 数组指针作函数参数

数组指针作函数参数
输入m个学生(最多30人)n门课程(最多5门)的成绩,然后计算并打印每个学生各门课的总分和平均分。其中,m和n的值由用户从键盘输入。
输入格式:

输入顺序如下:

学生个数m 课程数n
学生1课程1分数 学生1课程2分数 ... 学生1课程n分数
学生2课程1分数 学生2课程2分数 ... 学生2课程n分数
...
学生m课程1分数 学生m课程2分数 ... 学生m课程n分数

输出格式:

每个学生总分(整数) 平均分(实数,保留1位小数)
输入样例:

在这里给出一组输入。例如:

2 3
61 62 70
75 82 90

输出样例:

在这里给出相应的输出。例如:

193 64.3
247 82.3

#include <stdio.h>
int main()
{
	int m,n;scanf("%d%d",&m,&n);int a[n];
	for(int i=0;i<m;i++)
	{
		double sum=0;
		double aver;
		for(int j=0;j<n;j++)
		{
			scanf("%d",&a[j]);
			sum+=a[j];
		}
		aver=sum/n;
		printf("%.0f %.1f\n",sum,aver);
	}
	
}

7-2 查找奥运五环色的位置

奥运五环的5种颜色的英文单词按一定顺序排列{“red”, “blue”, “yellow”, “green”, “black” },定义指针数组并初始化,输入任意一个颜色的英文单词,从已有颜色中查找并输出该颜色的位置值,若没有找到,则输出"Not Found"。
输入格式:

输入一个代表颜色的单词。
输出格式:

输出单词对应的位置值,如果未找到,输出Not Found。
输入样例:

yellow

输出样例:

3文章来源地址https://www.toymoban.com/news/detail-766042.html

#include <stdio.h>
#include <string.h>
int main()
{
	char* colors[]={"red","blue","yellow","green","black"};
	char color[100];
	int flag=-1;
	
	
	scanf("%s",color);
	for(int i=0;i<5;i++)
	{
		if(strcmp(color,colors[i])==0)
		{
			flag=i;
			break;
		}
	}
	
	if(flag!=-1)
	printf("%d",flag+1);
	else
	printf("Not Found");
}

到了这里,关于【C/PTA】指针专项练习(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 敏捷专项练习题202207

    18、  [单选]  对于产品负责人来说,新数据库的要求非常模糊。 在与客户进行了长时间的讨论后,你发现你对产品或构建产品的过程没有足够的了解,难以继续推进。 作为敏捷实践者,接下来应该怎么做? The requirements for the new database are very vague to the product owner. After lengt

    2024年02月05日
    浏览(37)
  • 专项练习11

    目录 一、选择题     1、执行下列选项的程序,输出结果不是Window对象的是()     2、以下哪些代码执行后 i 的值为10: 二、编程题     1、判断 val1 和 val2 是否完全等同     2、统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率①不限

    2024年02月10日
    浏览(43)
  • 【MySQL】MySQL 专项练习

    其他 SQL的执行顺序是:FROM–WHERE–GROUP BY–HAVING–SELECT–ORDER BY 使用别名的方法 正确方法(3种): 字段 AS 别名 字段 别名: AS可省 字段 = 别名 仅限 SQL Server 错误方法: 别名=字段名称 :会将该字段所在的列中所有数据替换成别名 MySQL中正则表达式的匹配规则 MySQL 中使用

    2024年01月16日
    浏览(42)
  • 专项练习24

    目录 一、选择题     1、JavaScript 中的数字在计算机内存中占多少个Byte?     2、请问以下JS代码会输出什么 二、编程题     1、以数字的形式返回数字参数向下取整的结果 1、JavaScript 中的数字在计算机内存中占多少个Byte? A、2 Byte B、4Byte C、8Byte D、16Byte 正确答案:C   

    2024年02月13日
    浏览(29)
  • 专项练习9

    目录 一、选择题     1、在 JavaScript 中,用于阻止默认事件的默认操作的方法是     2、以下代码执行后,result 的值为()     3、不能从字符串 const str = \\\'qwbewrbbeqqbbbweebbbbqee\\\';中能得到结果 [\\\"b\\\", \\\"bb\\\", \\\"bbb\\\", \\\"bbbb\\\"]的语句是?     4、下面哪些方法可以实现在jQuery中通过远程

    2024年02月10日
    浏览(42)
  • 蓝桥杯单元测试专项练习Java版

    举重比赛,需要根据性别和体重来决定是否有参赛资格,具体规则如下: 当性别为男且体重大于等于 54 公斤时,可参加男子组比赛,否则无资格参赛。 当性别为女且体重大于等于 46 公斤时,可参加女子组比赛,否则无资格参赛。 当性别既不是男也不是女时,系统显示性别

    2024年02月19日
    浏览(34)
  • 【Shell】自定义传入参数

    授权

    2024年02月11日
    浏览(52)
  • 计网专项练习题:IP地址及子网划分

    1. 192.168.1.0/24 使用掩码255.255.255.240 划分子网,其可用子网数为(    ),每个子网内可用主机地址数为(    ) A. 14 14     B. 16 14         C. 254 6       D. 14 62 解析:子网掩码化成二进制,前面24位全为1,后面240化为1111 0000,网络位有4位,主机位4位,可用子网数2的4次方

    2024年01月22日
    浏览(46)
  • 【SQL刷题】Day12----SQL汇总数据专项练习

    博主昵称:跳楼梯企鹅 博主主页面链接: 博主主页传送门 博主专栏页面连接: 专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。 博主座右铭:发现光,追随光,

    2023年04月18日
    浏览(38)
  • 【SQL刷题】Day10----SQL高级过滤函数专项练习

    博主昵称:跳楼梯企鹅 博主主页面链接: 博主主页传送门 博主专栏页面连接: 专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。 博主座右铭:发现光,追随光,

    2023年04月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包